我正在尝试编写一个 Windows cmd 脚本以便串行执行多个任务。
然而,它总是在第一个命令后停止运行。
它停止后的命令是一个 maven 构建(不确定这是否相关)。
请问如何让脚本继续运行并按顺序运行每个任务?
安装任何软件或配置注册表等都完全不可能——很抱歉,它必须在原始的 Windows XP 安装上运行。
理想情况下,如果任何一个命令失败,脚本会中止,但这只是“好有的”而非必要条件。
谢谢。
我正在尝试编写一个 Windows cmd 脚本以便串行执行多个任务。
然而,它总是在第一个命令后停止运行。
它停止后的命令是一个 maven 构建(不确定这是否相关)。
请问如何让脚本继续运行并按顺序运行每个任务?
安装任何软件或配置注册表等都完全不可能——很抱歉,它必须在原始的 Windows XP 安装上运行。
理想情况下,如果任何一个命令失败,脚本会中止,但这只是“好有的”而非必要条件。
谢谢。
call otherCommand.bat
mvn
本身就是一个.bat文件,因此您需要像这样使用call mvn install
中的call
; 通常情况下,您不需要创建额外的cmd文件。 - jfpoilpretnpm
更新和protractor
测试来做类似的事情。一开始我认为这个答案与我无关,直到我意识到在Windows上,npm
和protractor
都是.cmd
文件。 - joshden您可以在命令之间使用&&符号,只有在第一个命令成功执行时才会执行第二个命令。更多信息请参见http://commandwindows.com/command1.htm
start /B /WAIT calc
。 - coderforlife不确定为什么第一个命令会停止。 如果您可以并行执行它,可以尝试类似的操作。
start cmd.exe /C 1.bat
start cmd.exe /C 2.bat
/K
而不是 /C
。 - JellicleCatcmd.exe
和 start
,只需使用 start x.bat1
即可。 - user66001我刚完成了一个类似的任务,创建一个批处理脚本来运行maven测试脚本。问题在于使用mvn clean install ...调用maven脚本本身就是一个脚本,因此需要使用call mvn clean install。
以下是有效的代码
rem run a maven clean install
cd C:\rbe-ui-test-suite
call mvn clean install
rem now run through all the test scripts
call mvn clean install -Prun-integration-tests -Dpattern=tc-login
call mvn clean install -Prun-integration-tests -Dpattern=login-1
注意使用call命令。这会允许在批处理文件中使用连续的Maven脚本。使用双拼音符号(&&)将只在第一个命令成功时运行第二个命令:
cd Desktop/project-directory && atom .
如果只使用一个“&”符号,将尝试运行两个命令,即使第一个命令失败:
cd Desktop/project-directory & atom .
驱动器:
cd "Script location"
schtasks /run /tn "TASK1"
schtasks /run /tn "TASK2"
schtasks /run /tn "TASK3"
exit
我不知道直接回答你的问题,但如果你经常编写这些脚本,学习一个更强大的语言比如Perl可能是值得的。Windows有免费的实现(例如Activestate、Cygwin)。我发现为了自己的任务而付出最初的努力是值得的。
编辑:
正如@Ferruccio所建议的,如果你不能安装额外的软件,考虑使用VBScript和/或JavaScript。它们内置于Windows脚本宿主程序中。