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

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

我在使用日期和时间数据进行文件命名的 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

最终结果是:C:\Temp\robolog_20100602_ 93208.log(早上 9:23)。

这个问题与这个

谢谢

答案1

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

答案2

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

SET HOUR=%TIME:~0,2%
IF "%HOUR:~0,1%" == " " SET HOUR=0%HOUR:~1,1%

答案3

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

您可以使用以下方法摆脱它for

for /f "delims= " %x in ("%time%") do set T=0%x

其余部分大致相同。

答案4

对于实现上述所有功能的最紧凑的解决方案,我认为

FOR /F "TOKENS=1-4 DELIMS=/ " %%A IN ("%DATE%") DO FOR /F "TOKENS=1-3 DELIMS=:." %%E IN ("%TIME: =0%") DO SET logfile=C:\Temp\robolog_%%D%%C%%B_%%E%%F%%G.log

无需在脚本中添加任何新行即可在此处工作。不过,它可能不如多个命令解决方案那么优雅。

相关内容