【问题标题】:Time environment variable not working as expected [duplicate]时间环境变量未按预期工作[重复]
【发布时间】:2019-05-18 23:41:33
【问题描述】:

我尝试使用 Windows 命令行来测量时间。

echo %TIME% & timeout 5 > NUL & echo %TIME%

但是这个命令会打印两个相等的时间戳。为什么?我做错了什么? timeout 5 只是举例。

【问题讨论】:

  • 添加setlocal ENABLEDELAYEDEXPANSION
  • setlocal 在批处理文件之外没有任何作用。

标签: batch-file cmd


【解决方案1】:

解释器首先解析整行(用相同的值替换%time%(因为解析时间相同))执行任何操作之前。您需要delayed expansion 才能使其工作。

如果需要命令行解决方案:

cmd /v /c "echo !time! & timeout 5 & echo !time!"

【讨论】:

  • 拜托,您是 34.4k 的声誉,您标记重复并仍然回答问题?
  • @MatthieuBrucher 我回答了这个问题,然后有人通知我重复了,所以我将其标记为这样。 (这是一个相当罗嗦的处理批处理文件(命令行解决方案隐藏在中间某处),所以它不是很明显,我猜大多数新手不会抓住重点,所以我留下了答案)
【解决方案2】:

这篇文章https://blogs.msdn.microsoft.com/oldnewthing/20060823-00/?p=29993 说ENV 变量在读取命令时展开。您的结果似乎表明在执行任何操作之前立即读取/解析/扩展了整个命令行。

【讨论】:

  • LOL - 同一秒 :D
猜你喜欢
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 2019-12-31
  • 1970-01-01
相关资源
最近更新 更多