Batch file 在windows批处理文件中以hh:mm:ss的形式获取时间

Batch file 在windows批处理文件中以hh:mm:ss的形式获取时间,batch-file,time,copy,Batch File,Time,Copy,我有一个批处理文件,它试图将一个源文件复制到另一个目录,但也在文件名后面附加日期和时间。下面是我的示例命令 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 然而,这个命令失败了,经过一些调试,我知道时间没有正确解析。Date被解析为该月的08,而如果我在上午7点运行上述命令,则时间不会被解析

我有一个批处理文件,它试图将一个源文件复制到另一个目录,但也在文件名后面附加日期和时间。下面是我的示例命令

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
然而,这个命令失败了,经过一些调试,我知道时间没有正确解析。Date被解析为该月的08,而如果我在上午7点运行上述命令,则时间不会被解析为07,但结果仅为7,目标文件名变为SF_CDWCalls\u 20180814_730,因此上述复制命令失败,并显示错误消息“无效语法”


是否有办法使用windows批处理文件中的%time%变量将时间设置为07:30?我发现time命令不支持太多选项。

您是否注意到最后一个
\u
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

谢谢,我试试这个。但是,当我在上午11:20运行copy命令时会发生什么?它变成01120了吗?我不希望发生这种情况。@BalajiPooruli正如我在回答中所说,它只会影响一位数
hh
没有两位数的前导空格
hh
,它仍然会回显
1120
@BalajiPooruli:
%time:=0%
将空格替换为零。对于
11:20
,这意味着:没有空格,因此没有替换。可能是