做不到?野狗的肾!
如果可以使用批处理来创建我们所知道的宇宙,那么它不能做的事情并不多——如果你很灵活的话。
例如,这里有一个演示,它将对两个进程的输出进行批处理等待——它所需要的只是一点合作。
@ECHO OFF
SETLOCAL
FOR %%i IN (1 2) DO DEL proc%%i.finished 2>nul&SET proc%%i=&START proc%%i
:loop
FOR %%i IN (1 2) DO IF EXIST proc%%i.finished CALL :getdata %%i
FOR %%i IN (1 2) DO IF NOT DEFINED proc%%i timeout /t 1 >NUL &GOTO loop
SET proc
GOTO :eof
:getdata
DEL proc%1.finished
FOR /f "delims=" %%o IN (proc%1.output) DO SET proc%1=%%o
DEL proc%1.output
GOTO :eof
这会发送两个进程,proc1
并且proc2
(我擅长创建富有想象力的任务名......)然后它会等到procN.finished
创建文件并处理相应的文件procN.output
(只需将输出行放入 envvar PROCn
)
当两个附属过程都完成时,它会继续 - 好吧,在这种情况下是 EOF ......
这是我用于测试的辅助过程的示例:
@echo off
setlocal enabledelayedexpansion
set /a delay=2+(%random% %% 3)
timeout /t %delay%
>proc2.output ECHO Finished AT %DATE% %TIME%
ECHO.>proc2.finished
EXIT
proc1.bat
是一样的,只是改变了一些数字。
工作正常 - SET 按预期显示两个辅助流程的结束时间。
只需将适当的输出字符串插入文件并使用标志文件通知控制批次子进程已完成工作。
当然,最初的问题有点模糊,我可能完全糊涂了……