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

commit-build.bat的内容:

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

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

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


当前回答

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

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

其他回答

如果要同时打开多个批处理文件,可以使用call命令。然而,call命令关闭当前bat文件并转到另一个文件。如果您想同时打开多个,可以尝试以下操作:

@echo off
start cmd "call ex1.bat&ex2.bat&ex3.bat"

依此类推,或对任意多个文件重复start cmd“call…”。这适用于Windows7,但我不确定其他系统。

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

您的脚本应为:

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

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

call foo.bat

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

有了正确的引用(有时可能很棘手):

start "" /D "C:\Program Files\ProgramToLaunch" "cmd.exe" "/c call ""C:\Program Files\ProgramToLaunch\programname.bat"""

第一个参数-标题(在本例中为空)第二个参数-/D指定起始目录,如果需要当前工作目录(例如“%~dp0”),则可以提交第三个参数-要启动的命令,“cmd.exe”第四个arg-命令的参数,其中的参数使用双引号(这是批量转义引号的方法)