我想从批处理文件(也就是批处理文件)启动两个程序-它们将执行几秒钟。然后在主批处理文件中,我要等待两者都完成,然后再继续主执行。那有可能吗?
您可以:
@echo off
set Token=MAIN_%RANDOM%_%CD%
start "%Token%_1" cmd /c child1.cmd
start "%Token%_2" cmd /c child2.cmd
:loop
ping -n 2 localhost >nul 2>nul
tasklist /fi "WINDOWTITLE eq %Token%_1" | findstr "cmd" >nul 2>nul && set Child1=1 || set Child1=
tasklist /fi "WINDOWTITLE eq %Token%_2" | findstr "cmd" >nul 2>nul && set Child2=1 || set Child2=
if not defined Child1 if not defined Child2 goto endloop
goto loop
:endloop
echo Both children died.
child1
并child2
正在执行pause
。这使用或多或少的唯一令牌来标识子批处理文件。它们在一个start
单独的窗口中启动,每个窗口都有一个特定的窗口标题。使用该窗口标题,我们可以使用再次找到它们,tasklist
并确定它们是否仍在运行。
确定批处理文件是否仍在运行会有些棘手。tasklist
使用窗口标题过滤器可以实现预期的功能,但不会返回合理的错误级别。这就是为什么我们必须通过管道findstr
来选择进程名称(以避免通过选择错误消息来对语言敏感)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句