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