我正在尝试让commit-build.bat执行其他.bat文件,作为构建过程的一部分。

commit-build.bat的内容:

"msbuild.bat"
"unit-tests.bat"
"deploy.bat"

这看起来很简单,但commit-build.bat只执行列表中的第一项(msbuild.bat)。

我分别运行了每个文件,没有任何问题。


当前回答

我知道我参加晚会有点晚了,但这里有另一种方法。也就是说,这个方法应该等到第一个完成,第二个完成,依此类推。

start "" /wait cmd.exe /c msbuild.bat
start "" /wait cmd.exe /c unit-tests.bat
start "" /wait cmd.exe /c deploy.bat

使用此方法可能产生的唯一问题是,在生成新的cmd.exe实例时,每个cmd.exe实例中都保留了错误级别检查。

Or..

start "" /wait call msbuild.bat
start "" /wait call unit-tests.bat
start "" /wait call deploy.bat

希望这有帮助。

其他回答

我知道我参加晚会有点晚了,但这里有另一种方法。也就是说,这个方法应该等到第一个完成,第二个完成,依此类推。

start "" /wait cmd.exe /c msbuild.bat
start "" /wait cmd.exe /c unit-tests.bat
start "" /wait cmd.exe /c deploy.bat

使用此方法可能产生的唯一问题是,在生成新的cmd.exe实例时,每个cmd.exe实例中都保留了错误级别检查。

Or..

start "" /wait call msbuild.bat
start "" /wait call unit-tests.bat
start "" /wait call deploy.bat

希望这有帮助。

如果我们想打开多个命令提示符,那么可以使用

start cmd /k

/k: 强制执行。

可以按如下方式启动许多命令提示。

start cmd /k Call rc_hub.bat 4444

start cmd /k Call rc_grid1.bat 5555

start cmd /k Call rc_grid1.bat 6666

start cmd /k Call rc_grid1.bat 5570.

您正在调用多个批处理以编译程序。我想当然地认为,如果发生错误:1) 批处理中的程序将以错误级别退出;2) 你想知道这件事。

for %%b in ("msbuild.bat" "unit-tests.bat" "deploy.bat") do call %%b|| exit /b 1

“||”测试错误级别是否高于0。这样,所有批次都会按顺序调用,但会在出现任何错误时停止,让屏幕保持原样,以便您看到任何错误消息。

只需使用call命令!下面是一个示例:

call msbuild.bat
call unit-tests.bat
call deploy.bat
Start msbuild.bat
Start unit-tests.bat
Start deploy.bat

如果这不起作用,请用call替换start或尝试以下操作:

Start msbuild.bat
Goto :1
:1
Start unit-tests.bat
Goto :2
:2
Start deploy.bat