Windows批处理文件中单行上的多个命令

Multiple commands on a single line in a Windows batch file

在UNIX中,我们可以将多个命令放在一行中,如下所示:

1
$ date ; ls -l ; date

我在Windows中尝试过类似的方法:

1
 > echo %TIME% ; dir ; echo %TIME

但它打印时间,不执行命令dir

我怎样才能做到这一点?


用途:

1
echo %time% & dir & echo %time%

从内存来看,这相当于bash和其他unixy shell中的分号分隔符。

还有&&(或||),它只在第一个命令成功(或失败)时执行第二个命令,但是单和符和&是您在这里要找的。

不过,这可能会给您相同的时间,因为环境变量往往是在读取时评估的,而不是在执行时。

您可以通过打开延迟扩展来绕过此问题:

1
2
3
pax> cmd /v:on /c"echo !time! & ping 127.0.0.1 >nul: & echo !time!"
15:23:36.77
15:23:39.85

这是命令行所需要的。如果您在脚本中执行此操作,则只需使用setlocal

1
2
3
4
@setlocal enableextensions enabledelayedexpansion
@echo off
echo !time! & ping 127.0.0.1 >nul: & echo !time!
endlocal