在Windows批处理文件中获取时间为hh:mm:ss

问题描述 投票:0回答:1

我有一个批处理文件,它试图将源文件复制到不同的目录,但还将日期和时间附加到文件名中。我的示例命令如下。

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 命令不支持太多选项。

batch-file time copy
1个回答
3
投票

您是否注意到最后一个

_
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"
© www.soinside.com 2019 - 2024. All rights reserved.