我正在尝试编写一个 Windows cmd 脚本来连续执行多个任务。但是,它总是在脚本中的第一个命令之后停止。
它停止后的命令是一个 Maven 构建(不确定这是否相关)。
请问如何让它继续运行并依次运行每个任务?
安装任何软件或配置注册表等都是完全不可能的——恐怕它必须在普通的 Windows XP 安装上工作。
理想情况下,如果任何命令失败,我希望脚本中止,但这是“很高兴拥有”,不是必需的。
谢谢。
我正在尝试编写一个 Windows cmd 脚本来连续执行多个任务。但是,它总是在脚本中的第一个命令之后停止。
它停止后的命令是一个 Maven 构建(不确定这是否相关)。
请问如何让它继续运行并依次运行每个任务?
安装任何软件或配置注册表等都是完全不可能的——恐怕它必须在普通的 Windows XP 安装上工作。
理想情况下,如果任何命令失败,我希望脚本中止,但这是“很高兴拥有”,不是必需的。
谢谢。
当您调用另一个 .bat 文件时,我认为您需要在调用前“调用”:
call otherCommand.bat
只有当第一个命令成功时,您才能在命令之间使用 && 符号来执行第二个命令。更多信息在这里http://commandwindows.com/command1.htm
不知道为什么第一个命令正在停止。如果你可以让它平行,你可以尝试类似的东西
start cmd.exe /C 1.bat
start cmd.exe /C 2.bat
我刚刚做了完全相同的(ish)任务,即创建一个批处理脚本来运行 Maven 测试脚本。问题是使用 mvn clean install 调用 maven scrips ... 本身就是一个脚本,因此需要使用 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
请注意调用的使用。这将允许在批处理文件中使用连续的 Maven 脚本。
仅当第一个命令成功时,使用双 & 号将运行第二个命令:
cd Desktop/project-directory && atom .
其中,即使第一个命令失败,仅使用一个 & 号也会尝试运行这两个命令:
cd Desktop/project-directory & atom .
我不知道你的问题的直接答案,但如果你做了很多这些脚本,可能值得学习一种更强大的语言,比如 perl。Windows 存在免费实现(例如 activestate、cygwin)。我发现为自己的任务付出最初的努力是值得的。
编辑:
正如@Ferruccio 所建议的,如果您无法安装额外的软件,请考虑使用 vbscript 和/或 javascript。它们内置于 Windows 脚本主机中。
如果您在 Windows 中运行,则可以使用以下命令。
驾驶:
cd "Script location"
schtasks /run /tn "TASK1"
schtasks /run /tn "TASK2"
schtasks /run /tn "TASK3"
exit
请注意,批处理文件中不需要分号。而需要使用call的原因是mvn本身是一个批处理文件,批处理文件之间需要用call相互调用,否则控制权不会返回给调用者。