我正在尝试让commit-build.bat执行其他.bat文件,作为构建过程的一部分。
commit-build.bat的内容:
"msbuild.bat"
"unit-tests.bat"
"deploy.bat"
这看起来很简单,但commit-build.bat只执行列表中的第一项(msbuild.bat)。
我分别运行了每个文件,没有任何问题。
我正在尝试让commit-build.bat执行其他.bat文件,作为构建过程的一部分。
commit-build.bat的内容:
"msbuild.bat"
"unit-tests.bat"
"deploy.bat"
这看起来很简单,但commit-build.bat只执行列表中的第一项(msbuild.bat)。
我分别运行了每个文件,没有任何问题。
当前回答
call msbuild.bat
call unit-tests.bat
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
希望这有帮助。
Use:
call msbuild.bat
call unit-tests.bat
call deploy.bat
不使用CALL时,当前批处理文件停止,调用的批处理文件开始执行。这是一种可以追溯到MS-DOS早期的奇特行为。
查看您的文件名,您是否考虑过使用NAnt或Ant(Java版本)之类的构建工具。你会得到比bat文件更多的控制。
如果我们有两个批处理脚本aaa.bat和bbb.bat,并且调用如下
call aaa.bat
call bbb.bat
执行脚本时,它将首先调用aaa.bat,等待aaa.bat的线程终止,然后调用bbb.bat。
但如果您不想等待aaa.bat终止调用bbb.bat,请尝试使用START命令:
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/AFFINITY <hex affinity>] [/WAIT] [/B] [command/program]
[parameters]
检查:
start /b aaa.bat
start /b bbb.bat
call msbuild.bat
call unit-tests.bat
call deploy.bat