为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

至尊宝的传说 2019-08-14 15:29:43
如何在退出之前等待所有批处理文件完成?我有一个主批处理文件,而不是调用其他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。希望有人可以帮助我!
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

我认为这是最简单,最有效的方式:

@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 /Pstart命令启动的所有进程结束之前,一直等待输入。此时,与之关联的管道( block )关闭,因此set /PStdin关闭,set /P操作系统终止命令。


查看完整回答
反对 回复 2019-08-14
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

试一试。

@echo offecho %time%start "" /wait cmd /c bat1.bat |start "" /wait cmd /c bat2.bat |start "" /wait cmd /c bat3.batecho %time%pause


查看完整回答
反对 回复 2019-08-14
  • 3 回答
  • 0 关注
  • 905 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信