我有一个脚本,可在日志中打印日期和时间,后跟字符串。
echo %DATE%_%TIME% Processing %%f >> process.log
问题在于日期和时间始终是脚本启动时的日期和时间。我一直在过夜运行脚本,但日期和时间仍然相同。有没有一种方法可以更新它们,以便在将字符串打印到日志文件时显示当前日期和时间?
最佳答案
您具有%%f
的事实表明您的echo命令在FOR循环中。立即解析整个FOR循环,并在解析时扩展%DATE%
。不会为每个迭代重新解析该命令,因此这就是为什么您为每个迭代获得相同值的原因。您将获得执行FOR语句之前存在的值!
解决方案是延迟扩展。将setlocal enableDelayedExpansion
放在脚本顶部附近。然后使用!DATE!_!TIME!
代替%DATE%_%TIME%
。延迟扩展意味着扩展在执行语句时发生,而不是在分析语句时发生。 HELP系统中有很好的解释。在命令提示符下键入HELP SET
或SET /?
并查找处理延迟扩展的部分。
关于date - 在DOS脚本中打印当前日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12524909/