从 Windowscmd 脚本执行多个命令

我正在尝试编写一个 Windows cmd 脚本来连续执行几个任务。 但是,它总是在脚本中的第一个命令之后停止。

它停止后的命令是一个 maven 构建(不确定是否相关)。

请问我如何使它继续并依次运行每个任务?

安装任何软件或配置注册表等是完全没有问题的-它必须工作在一个普通的 Windows XP 安装,我恐怕。

理想情况下,如果任何命令失败,我希望脚本中止,但这是一个“不错的拥有”,不是必需的。

谢谢。

284998 次浏览

当您调用另一个. bat 文件时,我认为您需要在调用前使用“ call”:

call otherCommand.bat

我不知道您的问题的直接答案,但是如果您编写了大量这样的脚本,那么学习一种更强大的语言(如 perl)可能是值得的。Windows 有免费的实现(例如 activEstate,cygwin)。我发现对于我自己的任务来说,最初的努力是值得的。

编辑:

正如@Ferruccio 所建议的,如果不能安装额外的软件,可以考虑 vbscript 和/或 javascript。它们内置在 Windows 脚本主机中。

只有在第一个命令成功的情况下,才能在命令之间使用 & & 符号来执行第二个命令。更多信息请看 http://commandwindows.com/command1.htm

不知道为什么第一个命令停止了。 如果你能让它平行,你可以尝试

start cmd.exe /C 1.bat
start cmd.exe /C 2.bat

如果在 Windows 中运行,可以使用以下命令。

驾驶:

cd "Script location"
schtasks /run /tn "TASK1"
schtasks /run /tn "TASK2"
schtasks /run /tn "TASK3"
exit

我刚刚完成了完全相同的(ish)任务,即创建一个批处理脚本来运行 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

注意调用的使用,这将允许在批处理文件中使用连续的 maven 脚本。

注意,在批处理文件中不需要分号。之所以需要使用 call,是因为 mvn 本身是一个批处理文件,批处理文件需要通过 call 相互调用,否则控制不会返回给调用者。

只有在第一个命令成功的情况下,使用双符号运行第二个命令:

cd Desktop/project-directory && atom .

如果只使用一个与号将尝试同时运行两个命令,即使第一个命令失败:

cd Desktop/project-directory & atom .