140

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

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

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

安装任何软件或配置注册表等都是完全不可能的——恐怕它必须在普通的 Windows XP 安装上工作。

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

谢谢。

4

8 回答 8

141

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

call otherCommand.bat
于 2008-10-13T15:31:36.183 回答
45

只有当第一个命令成功时,您才能在命令之间使用 && 符号来执行第二个命令。更多信息在这里http://commandwindows.com/command1.htm

于 2008-10-13T15:35:29.483 回答
25

不知道为什么第一个命令正在停止。如果你可以让它平行,你可以尝试类似的东西

start cmd.exe /C 1.bat      
start cmd.exe /C 2.bat
于 2008-10-13T15:44:42.133 回答
23

我刚刚做了完全相同的(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 脚本。

于 2011-10-21T10:21:16.437 回答
6

仅当第一个命令成功时,使用双 & 号将运行第二个命令:

cd Desktop/project-directory && atom .

其中,即使第一个命令失败,仅使用一个 & 号也会尝试运行这两个命令:

cd Desktop/project-directory & atom .
于 2017-09-23T22:57:16.900 回答
1

我不知道你的问题的直接答案,但如果你做了很多这些脚本,可能值得学习一种更强大的语言,比如 perl。Windows 存在免费实现(例如 activestate、cygwin)。我发现为自己的任务付出最初的努力是值得的。

编辑:

正如@Ferruccio 所建议的,如果您无法安装额外的软件,请考虑使用 vbscript 和/或 javascript。它们内置于 Windows 脚本主机中。

于 2008-10-13T15:32:25.667 回答
1

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

驾驶:

cd "Script location"
schtasks /run /tn "TASK1"
schtasks /run /tn "TASK2"
schtasks /run /tn "TASK3"
exit
于 2010-12-14T07:55:19.520 回答
0

请注意,批处理文件中不需要分号。而需要使用call的原因是mvn本身是一个批处理文件,批处理文件之间需要用call相互调用,否则控制权不会返回给调用者。

于 2014-07-25T08:32:48.643 回答