Windows cmd:如何在一行中设置和使用时间变量



以下是如何在Windows CMD中一行运行两个命令
人们很自然地认为,如果在一行中设置和使用时间,那就是

set cur_time=%time% && echo %cur_time%

然而,令我惊讶的是,事实并非如此。看看:

set cur_time=%time% && set cur_time && echo %cur_time%
cur_time=22:17:37.29
%cur_time%
set cur_time=%time% && set cur_time && echo %cur_time%
cur_time=22:17:40.09
22:17:37.29
set cur_time=%time% && set cur_time && echo %cur_time%
cur_time=22:17:52.25
22:17:40.09
set cur_time=%time% && set cur_time & echo %cur_time%
cur_time=22:19:37.50
22:17:52.25

我验证了set cur_time的输出是否正确
但是,为什么echo %cur_time%总是输出以前的值
如何在一行中设置和使用时间变量?

键入set /?setlocal /?for /?cmd /?以讨论变量的延迟展开。

简单的答案是分两行来做

添加细节。批处理文件需要遵守MS Dos标准。因此,一位IBM工程师使用CMD作为程序,将IBM大型机类型的脚本添加到OS/2中。因此,她将大多数MS Dos功能重载为MS Dos版本和OS/2版本。所有OS/2版本的命令都是可选择的,以确保兼容性。

由于MS Dos不支持一行多个命令,您选择了非标准行为。这需要你做其他事情来让它发挥作用。

最新更新