2012-06-24 16 views
10

Ho un file batch che ha un ciclo for in esso, nel ciclo devo attendere che il processo finisca quindi uso IF e GOTO, il problema è che goto sta rompendo il ciclo , Ho provato a trovare altre soluzioni ma non ho ottenuto nulla, il mio codice sta facendo un ciclo quindi controllo un processo in esecuzione, se prog.exe non è runnig quindi continua il ciclo, ma non voglio rompere il ciclo principale, c'è una soluzione? o qualche alternativa?file batch: goto in per ciclo

@echo off 
for /f "tokens=*" %%a in (file.txt) do (
bla bla bla 
bla bla bla 
:check 
tasklist /FI "IMAGENAME eq prog.exe" 2>NUL | find /I /N "prog.exe">NUL 
if "%ERRORLEVEL%"=="0" (goto check) 
) 

risposta

17

All'interno del ciclo, è possibile utilizzare una chiamata a una subroutine, sono consentiti i goto.
Il ciclo non verrà interrotto da una chiamata a una subroutine.

@echo off 
for /f "tokens=*" %%a in (file.txt) do (
    bla bla bla 
    bla bla bla 
    call :check 
) 
exit /b 

:check 
tasklist /FI "IMAGENAME eq prog.exe" 2>NUL | find /I /N "prog.exe">NUL 
if "%ERRORLEVEL%"=="0" (goto check) 
exit /b 
+0

risposta perfetta, grazie – Leo92