在DOS脚本中打印当前日期和时间

Ray*_*yne 14 time date dos

我有一个脚本,打印日志和时间,后跟日志中的字符串.

echo %DATE%_%TIME% Processing %%f >> process.log
Run Code Online (Sandbox Code Playgroud)

问题是日期和时间始终是脚本启动的日期和时间.我一直在运行脚本,但仍然有相同的日期和时间.有没有办法更新它们,以便显示字符串打印到日志文件时的当前日期和时间?

dbe*_*ham 34

%%f指示echo命令的事实是在FOR循环中.整个FOR循环立即被解析,并%DATE%在解析时扩展.不会为每次迭代重新解析该命令,因此这就是为每次迭代获得相同值的原因.您将获得执行FOR语句之前存在的值!

解决方案是延迟扩张.放在setlocal enableDelayedExpansion脚本顶部附近.然后使用!DATE!_!TIME!而不是%DATE%_%TIME%.延迟扩展意味着扩展在语句执行时发生,而不是在解析时发生.在HELP系统中有一个很好的解释.键入HELP SETSET /?从命令提示符处查找处理延迟扩展的部分.