如何在退出之前等待所有批处理文件完成?

如何在退出之前等待所有批处理文件完成?

我有一个主批处理文件,而不是调用其他4个批处理文件,所以我们可以并行运行。

例:

Main.bat

    start call batch1.bat
    start call batch2.bat
    start call batch3.bat
    start call batch4.bat
    exit

我希望Main.bat在所有batch1到batch 4停止执行后退出。通过这种方式,我可以获得批处理文件的总运行时间。问题是Main.bat甚至在batch1到batch4完成执行之前退出。

我尝试为每个批处理文件计算%errorlevel%,但即使4 .bat文件仍在运行,它总是返回0。

希望有人可以帮助我!


至尊宝的传说
浏览 1046回答 3
3回答

潇湘沐

我认为这是最简单,最有效的方式:@echo offecho %time%(     start call batch1.bat     start call batch2.bat     start call batch3.bat     start call batch4.bat) | set /P "="echo %time%在此方法中,主文件中的等待状态是事件驱动的,因此它不消耗任何CPU时间!编辑:添加了一些解释该set /P命令将终止命令当有人在( block )一个线路输出,但start命令不显示任何线在此的cmd.exe。这样,set /P在start命令启动的所有进程结束之前,一直等待输入。此时,与之关联的管道( block )关闭,因此set /PStdin关闭,set /P操作系统终止命令。

繁星点点滴滴

试一试。@echo offecho %time%start "" /wait cmd /c bat1.bat |start "" /wait cmd /c bat2.bat |start "" /wait cmd /c bat3.batecho %time%pause
打开App,查看更多内容
随时随地看视频慕课网APP