在 Windows 上运行多个并发后台进程然后等待所有进程终止

Ser*_*gio 16 windows command-line parallel-processing wait

有人知道是否有可以执行此操作的 cmd 脚本和/或准备好用于该工作的命令行工具吗?

Rob*_*obW 11

创建下面的三个批处理文件。Main.bat 启动 1.bat 和 2.bat

1.bat 和 2.bat 写出 main.bat 检查的临时文件。当 1.bat 和 2.bat 工作时,main.bat 报告仍在处理。当您在 1.bat 或 2.bat 的打开窗口中按 Enter 键时,临时文件被删除,程序退出。这模拟了该 .bat 文件的处理停止。如果对 1 和 2.bat 都执行此操作,main.bat 会向您报告这些进程的处理已完成。你可以让 1.bat 和 2.bat 做任何你想做的事情,只要你完成后清除临时文件。此时 main.bat 也可以做任何你想让它做的事情。

1.蝙蝠

echo %time% > 1.tmp
pause
del 1.tmp
exit 
Run Code Online (Sandbox Code Playgroud)

2.bat

echo %time% > 2.tmp
pause
del 2.tmp
exit
Run Code Online (Sandbox Code Playgroud)

主文件

@echo off
start "1" 1.bat
start "2" 2.bat
    @ping -n 1 127.0.0.1 > nul
:loop
@echo Processing......
if not exist *.tmp goto :next
    @ping -n 5 127.0.0.1 > nul
goto loop
:next
@echo Done Processing!
Run Code Online (Sandbox Code Playgroud)


Har*_*ton 6

足够简单,只要进程不需要标准输入或输出。从命令行或批处理文件中:

process1 | process2 | process3 | process4
Run Code Online (Sandbox Code Playgroud)

这将同时运行所有四个进程,并且在它们全部退出之前不会返回。(可能的例外:如果一个进程明确关闭标准输出,它可能会被视为它已经退出。但这是不寻常的,很少有进程这样做。)

我不确定您可以通过这种方式同时启动多少个进程。我已经尝试了十个。