首页 文章

为什么只有这个Windows批处理文件的第一行执行但所有三行都在命令shell中执行?

提问于
浏览
150

我有一个批处理文件,一个接一个地执行三个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)中,它们会一个接一个地执行,没有任何问题 . 所以这显然是dos批处理文件的一些问题 .

5 回答

  • 0

    call 有帮助 . 然而今天却没有 .

    这就是我解决它的方式:

    Bat file contents (如果要在cmds错误之一时批量 stop

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

    Bat file contents (如果要在cmds错误之一时批量 continue

    cmd1 & ^
    cmd2 & ^
    cmd3 & ^
    cmd4
    
  • 253

    它应该是特定的 mvn 命令 exec 并且不返回,因此不执行其余的命令 .

  • 15

    要从一个脚本执行更多Maven构建,您应使用以下方式使用Windows call 函数:

    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
    
  • 5

    尝试编写以下批处理文件并执行它:

    Echo one
    cmd
    Echo two
    cmd
    Echo three
    cmd
    

    只有前两行被执行 . 但是,如果在命令提示符下键入“exit”,则会处理下两行 . 这是一个加载另一个的shell .

    为了确保这不是您的脚本中发生的事情,只需在第一个命令结束时键入“exit” .

    HTH!

  • 1

    Maven使用批处理文件来开展业务 . 对于任何批处理脚本,必须使用call命令调用另一个脚本,以便在调用的脚本完成后它知道返回到脚本 . 尝试将 call 添加到所有命令 .

    您可以尝试的另一件事是使用start命令,该命令应该类似 .

相关问题