同时执行多个批处理文件并监视其处理是否完成

cub*_*beb 0 windows cmd batch-file

我有一个主批处理文件,它调用多个批处理文件。我希望能够同时执行所有这些批处理文件。完成所有操作后,我需要在主匹配文件中进行进一步的处理。

当我使用“开始”调用多个批处理文件时,能够同时启动所有批处理文件,但是我无法跟踪它们。(主批处理文件认为它们的过程在执行其他批处理文件的那一刻就完成了)。

当我使用“呼叫”时,能够监视批处理文件的过程,但是它将按顺序而不是同时启动批处理文件。

有没有解决的办法?在此PC上具有有限的权限,并尝试仅使用批处理来完成此操作。

主批处理文件

call first.bat
call second.bat
call third.bat
:: echo only after all batch process done
echo done!
Run Code Online (Sandbox Code Playgroud)

蝙蝠

timeout /t 10
Run Code Online (Sandbox Code Playgroud)

蝙蝠

timeout /t 10
Run Code Online (Sandbox Code Playgroud)

蝙蝠

timeout /t 10
Run Code Online (Sandbox Code Playgroud)

Aac*_*ini 5

这是解决此问题的最简单,最有效的方法:

(
start first.bat
start second.bat
start third.bat
) | pause

echo done!
Run Code Online (Sandbox Code Playgroud)

在这种方法中,主文件中的等待状态是事件驱动的,因此它不占用任何CPU时间。pause( block )输出中的任何命令输出一个字符时,该命令将终止,但此cmd.exe中的start命令不显示任何输出。通过这种方式,一直等待字符,直到命令启动的所有进程结束。到那时,与关联的管道已关闭,因此Stdin也已关闭,命令以终止。pausestart( block )pausecmd.exe