在Unix中,我们可以像这样将多个命令放在一行中:
$ date ; ls -l ; date
我在Windows上尝试了类似的事情:
> echo %TIME% ; dir ; echo %TIME
但它只打印了时间并没有执行命令dir
。
我该如何实现这个目标?
$ date ; ls -l ; date
我在Windows上尝试了类似的事情:
> echo %TIME% ; dir ; echo %TIME
但它只打印了时间并没有执行命令dir
。
我该如何实现这个目标?
使用:
echo %time% & dir & echo %time%
这个是记忆中相当于在bash和其他类Unix 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
time /t
(或 echo.|time
)而不是 echo %time%
来规避这个问题。 - Joey也可以使用scriptrunner实现
ScriptRunner.exe -appvscript demoA.cmd arg1 arg2 -appvscriptrunnerparameters -wait -timeout=30 -rollbackonerror -appvscript demoB.ps1 arg3 arg4 -appvscriptrunnerparameters -wait -timeout=30
还具有回滚、超时和等待等一些功能。