【问题标题】:Getting error creating date format for folder [duplicate]为文件夹创建日期格式时出错[重复]
【发布时间】:2019-04-10 01:43:11
【问题描述】:

我有以下代码创建日期格式,允许我为前一天创建一个文件夹。问题是,如果日期介于 1 和 9 之间,则会产生错误,即日期戳是 -1-04-2019 而不是 08-04-2019。 %day%-%month%-%year% 的 echo 语句在 09-04-2019 是正确的。

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%

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

问候 迈克尔

【问题讨论】:

  • 您在行中缺少 %:SET /A Yesterday=%day-1 应该变为 SET /A Yesterday=%day%-1
  • StackOverFlow 上有很多问题和答案可以回答您的问题。在您提出另一个问题之前,请考虑将来使用搜索功能。请拨打Tour。请阅读,How to ask a good question?。也请阅读How to create a Minimal, Complete, and Verifiable example
  • 我完全同意壁球!无论如何,只是要指出:前导零让set /A 将数字视为八进制数字,因此使用0809 的计算无法工作,因为它们是无效的八进制数字。而且批处理脚本中没有日期/时间数据格式,因此使用这些值的计算总是一团糟;切换到或借用可以正确处理此类数据的语言(我想除了批处理之外几乎没有语言不能)...

标签: batch-file


【解决方案1】:

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

@For /F %%A In ('PowerShell -NoP "(Get-Date).AddDays(-1).ToString('dd-MM-yyy')"') Do @MD "%%A"

甚至更简单:

@PowerShell -NoP "MD (Get-Date).AddDays(-1).ToString('dd-MM-yyy')">Nul

【讨论】:

  • 我设置了一个变量,以便他/该批次稍后知道昨天是哪一天。 ;-)
  • @LotPings,这完全取决于意图是什么,根据问题和标题,意图是创建一个使用所需日期模式字符串命名的目录。这正是这样做的,其他任何事情都超出了问题的范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
相关资源
最近更新 更多