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