如何在批处理脚本中并行运行多个.bat文件且不等待其结束?
解决批处理脚本中持续运行多个.bat文件的问题
你遇到的核心问题是call命令的特性:它会等待被调用的批处理文件完全执行结束才会继续执行脚本的下一行。而你的startLoginServer.bat是持续运行的服务类脚本,自然会让整个主脚本卡在这一步。
要实现让多个.bat文件独立持续运行的需求,你需要用start命令来启动这些批处理文件——start会创建一个新的命令行窗口来运行目标程序/脚本,主脚本不会等待它结束,而是直接继续执行后续步骤。
修改后的完整脚本如下:
pushd tools\wamp64 start wampmanager.exe pushd ..\..\server\login :: 用start启动LoginServer,指定窗口标题方便区分 start "Login Server" startLoginServer.bat pushd ..\test :: 同理启动TestServer start "Test Server" startTestServer.bat pushd ..\..\..\ :: 启动客户端程序 start "P2 Client" "C:\DEV\P2\Test\client\P2.bin"
关键修改说明:
- 替换
call为start:start会新开独立窗口运行bat,主脚本不会阻塞等待 - 添加窗口标题:
start后的引号内容是新窗口的标题(比如"Login Server"),这样你能轻松区分不同的服务窗口,方便后续排查问题 - 路径修正:最后添加了
pushd ..\..\..\回到初始目录(可选,但能避免后续如果有其他操作时的路径混乱)
如果你的startLoginServer.bat需要在特定工作目录运行,也可以直接用start的/d参数指定目录,省去pushd的步骤,比如:
start "Login Server" /d "server\login" startLoginServer.bat
这样所有的服务bat和exe都会独立运行,主脚本执行完所有步骤后会自动退出,不会被任何持续运行的进程阻塞。
内容的提问来源于stack exchange,提问作者Ellone
相关产品推荐
相关产品推荐

