为什么只有这个Windowsbatch file的第一行执行,但所有三行都在命令行中执行?

我有一个batch file,一个接一个地执行三个Maven命令。 每个命令都可以在脚本中成功执行 – 本身! 但是,当我将所有三个命令添加到同一个文件时,只有第一个命令在脚本退出之前执行。 任何想法为什么?

mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar -Dpackaging=jar -DgeneratePom=true mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar -Dpackaging=jar -DgeneratePom=true mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar -Dpackaging=jar -DgeneratePom=true 

另外,如果我复制所有这三个命令并将它们粘贴到一个命令shell(cmd.exe)中,它们将一个接一个地执行而没有任何问题。 所以这显然是DOSbatch file的一些问题。

Maven使用batch file来完成其业务。 对于任何批处理脚本,必须使用call命令调用另一个脚本,以便知道在被调用的脚本完成之后返回到脚本。 尝试预先call所有命令。

你可以尝试的另一件事是使用start命令应该类似的工作。

call帮助

但今天它din't

这是我解决的方法:

蝙蝠文件内容 (如果你想停止批处理时cmds错误之一)

 cmd1 && ^ cmd2 && ^ cmd3 && ^ cmd4 && ^ 

bat文件内容 (如果你想继续 cmd错误之一的批处理)

 cmd1 & ^ cmd2 & ^ cmd3 & ^ cmd4 & ^ 

要从一个脚本执行更多的Maven构build,您应该使用以下方式的Windows 调用function:

 call mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar -Dpackaging=jar -DgeneratePom=true call mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar -Dpackaging=jar -DgeneratePom=true call mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar -Dpackaging=jar -DgeneratePom=true 

应该是特定的mvn命令exec并不返回,从而不执行其余的命令。

尝试编写下面的batch file并执行它:

 Echo one cmd Echo two cmd Echo three cmd 

只有前两行被执行。 但是,如果在命令提示符下input“exit”,则会处理接下来的两行。 这是一个装载另一个的shell。

要确定这不是脚本中发生的事情,只要在第一个命令结束时input“exit”即可。

HTH!