Windowsbatch file中的单行命令

在Unix中,我们可以像这样在一行中放入多个命令:

$ date ; ls -l ; date 

我在Windows中尝试过类似的东西:

  > echo %TIME% ; dir ; echo %TIME 

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

我怎样才能做到这一点?

使用:

 echo %time% & dir & echo %time% 

这是从内存,相当于在bash和其他UNIXy shell中的分号分隔符。

还有&& (或|| ),如果第一个成功(或失败),它只执行第二个命令,但是单个符号&就是你在这里寻找的东西。


这可能会给你同一时间,但是因为环境variables往往是读取而不是执行评估。

你可以通过打开延迟扩展来解决这个问题:

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

这是从命令行需要的。 如果你在脚本里面这样做,你可以使用setlocal

 @setlocal enableextensions enabledelayedexpansion @echo off echo !time! & ping 127.0.0.1 >nul: & echo !time! endlocal