1

我在使用以下批处理文件时遇到问题。首次运行时,它不会在文件中正确输出日期。在第一次运行时,我得到以下信息:

*Start of batch file ~4,2dt:~6,2dt:~2,2dt:~8,2dt:~10,2* 
*End of batch file ~4,2dt:~6,2dt:~2,2dt:~8,2dt:~10,2*

在下次运行时它可以正常工作:

*Start of batch file 10/18/13 06:46*
*End of batch file 10/18/13 06:46*

需要注意的一点是,第一次运行时日志文件不存在,所以它可能与此有关?!?!?

这是我的批处理文件:

set logFile=C:\log.txt
echo %logFile%

REM Get the Start Date and Time and Parse it out
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a 
set start=%dt:~4,2%/%dt:~6,2%/%dt:~2,2% %dt:~8,2%:%dt:~10,2%

ECHO Start of batch file %start% >>%logFile%
REM Run some procedure

REM Get the End Date and Time and Parse it out
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a 
set end=%dt:~4,2%/%dt:~6,2%/%dt:~2,2% %dt:~8,2%:%dt:~10,2%

ECHO End of batch file %end% >>%logFile%

任何帮助/建议将不胜感激。

4

1 回答 1

2

For 语句的内容在执行之前被扩展,因此 dt 一开始是空的。

将“setlocal ENABLEDELAYEDEXPANSION”添加到批处理文件的顶部。也将 % 替换为 ! 对于您对 dt 的所有扩展。所以设置的开始和结束字符串变为 "!dt:~4,2!/!dt:~6,2!/!dt:~2,2!!dt:~8,2!:!dt:~10, 2!”

运行“set /?”查看“set”帮助

请参阅SETLOCAL 和 ENABLEDELAYEDEXPANSION 如何工作?

于 2013-10-18T13:18:12.627 回答