Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 为文件夹创建日期格式时出错_Batch File_Powershell - Fatal编程技术网

Batch file 为文件夹创建日期格式时出错

Batch file 为文件夹创建日期格式时出错,batch-file,powershell,Batch File,Powershell,下面的代码创建了一个日期格式,允许我为前一天创建一个文件夹。问题在于,如果日期介于1和9之间,则如果日期戳显示的是-1-04-2019而不是08-04-2019,则会产生错误。%day%-%month%-%year%的回音声明于2019年4月9日正确无误 SET day=%date:~0,2% SET Month=%date:~3,2% SET Year=%date:~6,4% SET /A Yesterday=%day-1 echo %Yesterday%-%Month%-%Year% ech

下面的代码创建了一个日期格式,允许我为前一天创建一个文件夹。问题在于,如果日期介于1和9之间,则如果日期戳显示的是-1-04-2019而不是08-04-2019,则会产生错误。%day%-%month%-%year%的回音声明于2019年4月9日正确无误

SET day=%date:~0,2%
SET Month=%date:~3,2%
SET Year=%date:~6,4%
SET /A Yesterday=%day-1
echo %Yesterday%-%Month%-%Year%
echo %day%-%Month%-%Year%
结果=

-1-04-2019
09-04-2019
有没有办法把零加起来,这样我就可以用前导零得到1到9之间的一天

我尝试了一个If语句:-

IF "%date:~0,1%" == "0" SET day=0%date:~1,1%

问候 Michael

如果您利用您的资源,您可以轻松获得所需字符串,而无需在昨天是前一个月或前一年的情况下执行计算;(或可能考虑闰年等)

@For/F%%A In('PowerShell-NoP'(获取日期)。AddDays(-1)。ToString('dd-MM-yyy')”)Do@MD“%%A”
或者更简单:

@PowerShell-NoP“MD(获取日期).AddDays(-1).ToString('dd-MM-yyy')”>Nul

行中缺少一个%:SET/a dayed=%day-1应变为SET/a dayed=%day%-1 StackOverFlow上有许多问题和答案可以回答您的问题。在你问另一个问题之前,请考虑在将来使用搜索功能。请坐飞机。请阅读。另外,请阅读我完全同意壁球人!总之,要指出的是:前导零让
set/A
将数字视为八进制数,因此使用
08
09
的计算无法工作,因为它们是无效的八进制数。批处理脚本中没有日期/时间数据格式,因此使用这些值的计算总是一团糟;切换到或借用能够正确处理此类数据的语言(我想除了batch之外,几乎没有其他语言不能)…我设置了一个变量,以便他/批次稍后知道昨天是哪一天。;-)@LotPings,这完全取决于意图是什么,基于问题和标题,意图是使用所需的日期模式字符串创建一个名为的目录。正是这样,其他任何事情都超出了问题的范围。
IF "%date:~0,1%" == " " SET day=0%date:~1,1%