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

时间:2012-09-21 05:46:47

标签: date time dos

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

echo %DATE%_%TIME% Processing %%f >> process.log

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

1 个答案:

答案 0 :(得分:34)

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

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