我在使用日期和时间数据进行文件命名的 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
无需在脚本中添加任何新行即可在此处工作。不过,它可能不如多个命令解决方案那么优雅。