繁体   English   中英

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

[英]Multiple commands on a single line in a Windows batch file

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

$ date ; ls -l ; date

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

 > echo %TIME% ; dir ; echo %TIME

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

我怎样才能做到这一点?

采用:

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

也可以使用scriptrunner实现

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

其中还有一些功能,如回滚、超时和等待。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM