MyFile1.bat
两次调用MyFile2.bat
:
start MyFile2.bat argA, argB, argC
start MyFile2.bat argX, argY, argZ
此时,我怎么能等到MyFile2.bat
的调用产生的两个进程都完成了?
答案 0 :(得分:7)
简单使用Start / WAIT参数。
start /wait MyFile2.bat argA, argB, argC
start /wait MyFile2.bat argX, argY, argZ
答案 1 :(得分:3)
start /w cmd /c "start cmd /c MyFile2.bat argA, argB, argC & start cmd /c MyFile2.bat argA, argB, argCt"
根据我的测试,这应该可以提供MyFile2.bat。最终应该使用bat文件的完整路径。
答案 2 :(得分:3)
您可以使用“状态文件”来了解;例如,在MyFile1.bat中执行以下操作:
echo X > activeProcess.argA
start MyFile2.bat argA, argB, argC
echo X > activeProcess.argX
start MyFile2.bat argX, argY, argZ
:waitForSpawned
if exist activeProcess.* goto waitForSpawned
并在MyFile2.bat:
的末尾插入此行del activeProcess.%1
您还可以在等待周期中插入ping
延迟,以便在此循环中浪费更少的CPU。
答案 3 :(得分:2)
你可以这样做:
start MyFile2.bat argA, argB, argC
start MyFile2.bat argX, argY, argZ ^& echo.^>End.val ^& exit
:testEnd
if exist end.val (del end.val
echo Process completed
pause)
>nul PING localhost -n 2 -w 1000
goto:testEnd
当第二个start2.bat完成作业时,将创建一个文件“End.val”,您只需要测试该文件是否存在,然后您就知道您的过程已完成。
如果第一个myfile2可能需要更多时间来执行,那么第二个你可以使用第一个start myfile2.bat
执行相同的操作(使用另一个文件名),并在:testend
start MyFile2.bat argA, argB, argC ^& echo.^>End1.val ^& exit
start MyFile2.bat argX, argY, argZ ^& echo.^>End.val ^& exit
:testEnd
if exist end.val if exist end1.val (del end.val
del end1.val
echo Process completed
pause)
>nul PING localhost -n 2 -w 1000
goto:testEnd