Windows批处理:在后台运行进程并等待它

Mak*_*cha 2 windows batch-file windows-shell

我需要从批处理作业中启动2个后台进程,然后等待它们.Unix shell模拟是:

myprocess1 -flags1 &
pid1=$!

myprocess2 -flags2 &
pid2=$!

wait ${pid1}
wait ${pid2}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

jeb*_*jeb 5

您可以使用启动包装器来解决它.

包装器启动一个进程,start /wait在进程完成后,它会删除一个用于发送信号的文件.

你通过包装器开始的第一个过程,第二个你可以开始的过程start /wait.
然后你只需要等待文件.

Echo > waiting.tmp 
Start cmd /c wrapper.bat myprocess1 -flags1
start /wait myprocess2 -flags2

:loop
if exist waiting.tmp goto :loop
Run Code Online (Sandbox Code Playgroud)

wrapper.bat的内容

start /wait %*
del waiting.tmp
Run Code Online (Sandbox Code Playgroud)

  • +1 - 您可以反转逻辑并以"waiting.tmp"开始,并通过删除文件来完成信号.主脚本中少了一行代码:-) (2认同)