18

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

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

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

4

1 回答 1

38

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

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

于 2012-09-21T12:29:10.233 回答