我有一个主批处理文件,它调用多个批处理文件。我希望能够同时执行所有这些批处理文件。全部完成后,我需要在主批处理文件中进行进一步的处理。
当我使用“开始”调用多个批处理文件时,我可以同时启动所有批处理文件,但我失去了对它们的跟踪。 (主批处理文件在执行其他批处理文件时认为其进程已完成)。
当我使用“调用”时,我可以监视批处理文件进程,但它会按顺序而不是同时启动批处理文件。
有没有解决的办法?我在这台电脑上的权限有限,并且我尝试仅使用批处理来完成此操作。
主批处理文件
call first.bat
call second.bat
call third.bat
:: echo only after all batch process done
echo done!
首先.bat
timeout /t 10
第二个bat
timeout /t 10
第三个.bat
timeout /t 10
这是解决这个问题最简单、最有效的方法:
(
start first.bat
start second.bat
start third.bat
) | pause
echo done!
在该方法中,主文件中的等待状态是事件驱动,所以它不消耗任何CPU时间。这pause
当命令中的任何一个时,命令将终止( block )
输出一个字符,但是start
命令不显示任何输出在这个cmd.exe中。这样,pause
一直等待一个字符,直到所有进程启动start
命令结束。此时,关联到的管道( block )
是关闭的,所以pause
标准输入被关闭并且命令被终止cmd.exe
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)