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

时间:2012-01-19 07:04:18

标签: windows batch-file

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

$ date ; ls -l ; date

我在Windows中尝试了类似的事情:

 > echo %TIME% ; dir ; echo %TIME

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

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:167)

使用:

echo %time% & dir & echo %time%

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

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


这可能会给你同样的时间,因为环境变量倾向于在读取而不是执行时进行评估。

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

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

答案 1 :(得分:0)

也可以通过scriptrunner

实现
ScriptRunner.exe -appvscript demoA.cmd arg1 arg2 -appvscriptrunnerparameters -wait -timeout=30 -rollbackonerror -appvscript demoB.ps1 arg3 arg4 -appvscriptrunnerparameters -wait -timeout=30 

还有回滚,超时和等待等功能。