【发布时间】:2012-09-13 13:04:04
【问题描述】:
我有一个脚本,它在日志中打印日期和时间,后跟一个字符串。
echo %DATE%_%TIME% Processing %%f >> process.log
问题是日期和时间总是脚本启动的日期和时间。我一夜之间运行了这个脚本,仍然有相同的日期和时间。有没有办法更新它们,以便在字符串打印到日志文件时显示当前日期和时间?
【问题讨论】:
我有一个脚本,它在日志中打印日期和时间,后跟一个字符串。
echo %DATE%_%TIME% Processing %%f >> process.log
问题是日期和时间总是脚本启动的日期和时间。我一夜之间运行了这个脚本,仍然有相同的日期和时间。有没有办法更新它们,以便在字符串打印到日志文件时显示当前日期和时间?
【问题讨论】:
您拥有%%f 的事实表明您的 echo 命令处于 FOR 循环中。一次解析整个 FOR 循环,并在解析时扩展 %DATE%。每次迭代都不会重新解析该命令,这就是为什么每次迭代都获得相同值的原因。你得到的是在 FOR 语句执行之前存在的值!
解决方案是延迟扩展。将setlocal enableDelayedExpansion 放在脚本顶部附近。然后使用!DATE!_!TIME! 而不是%DATE%_%TIME%。延迟扩展意味着扩展发生在语句执行时,而不是在解析时。 HELP 系统中有一个很好的解释。在命令提示符下输入 HELP SET 或 SET /? 并查找处理延迟扩展的部分。
【讨论】: