我有一个批处理文件,它试图将源文件复制到不同的目录,但还将日期和时间附加到文件名中。我的示例命令如下。
copy /Y c:\apps\BIDW\Sf_Calls.txt c:\apps\CDW\SF_CDWCalls_%date:~-4,4%%date:~7,2%%date:~-10,2%_%time:~0,2%%time:~3,2%.txt
但是,这个命令失败了,经过一些调试我发现时间没有正确解析。日期被解析为月份的 08,而如果我在上午 7 点运行上述命令,时间不会被解析为 07,而只是 7,结果,目标文件名变为 SF_CDWCalls_20180814_ 730,因此上面的复制命令失败并显示错误消息“无效语法”。
有没有办法使用 Windows 批处理文件中的 %time% 变量获取 07:30 的时间?我发现 time 命令不支持太多选项。
您是否注意到最后一个
_
和 730
之间的空格是由 %time%
变量中的空格引起的?当运行 echo %time%
前导空格 7:30:23,40
时你会看到它
因此有条件地将前导空格替换为
0
。这只会影响个位数hh
echo %time: =0%
因此,在您的脚本中,执行以下操作:
set "tmptime=%time: =0%"
copy /Y "c:\apps\BIDW\Sf_Calls.txt" "c:\apps\CDW\SF_CDWCalls_%date:~-4,4%%date:~7,2%%date:~-10,2%_%tmptime:~0,2%%tmptime:~3,2%.txt"