使用 %time% 变量的批处理脚本需要前导零

Ira*_*Ira 26 scripting windows time batch

我在 DOS 脚本中遇到了一个错误,该错误使用日期和时间数据进行文件命名。问题是我最终出现了一个差距,因为时间变量没有自动提供小时 < 10 的前导零。所以运行> echo %time% 返回:'9:29:17.88'。

有没有人知道有条件地填充前导零来解决这个问题的方法?

更多信息:我的文件名设置命令是:

set logfile=C:\Temp\robolog_%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
Run Code Online (Sandbox Code Playgroud)

最终是:C:\Temp\robolog_20100602_93208.log(早上 9:23)。

这个问题和这个有关。

谢谢

Jes*_*sse 60

一个非常简单的方法是用零替换前导空格:
echo %TIME: =0%
输出:
09:18:53,45


小智 14

我的解决方案是使用以下想法:

SET HOUR=%TIME:~0,2%
IF "%HOUR:~0,1%" == " " SET HOUR=0%HOUR:~1,1%
Run Code Online (Sandbox Code Playgroud)


Joe*_*oey 5

丹尼斯的回答类似的想法。问题是宽度%time%总是相同的,所以它在开头插入一个空格而不是返回一个较短的字符串。

你可以摆脱它for

for /f "delims= " %x in ("%time%") do set T=0%x
Run Code Online (Sandbox Code Playgroud)

其余的或多或少是相同的。

  • 杰西的答案是正确的…… (3认同)
  • 此解决方案适用于 &gt; 10 但现在为 10 创建“010”:... (2认同)