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

commit-build.bat的内容:

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

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

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


当前回答

您的脚本应为:

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

其他回答

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

要在.bat文件中调用.bat文件,请使用

call foo.bat

(是的,这很愚蠢,如果您可以像在命令提示符下那样使用foo.bat调用它,这会更有意义,但正确的方法是使用call。)

Use:

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

不使用CALL时,当前批处理文件停止,调用的批处理文件开始执行。这是一种可以追溯到MS-DOS早期的奇特行为。

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

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

希望这有帮助。

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

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