2012-06-24 11 views
10

Mam plik wsadowy, który ma pętlę for, w pętli muszę poczekać na zakończenie procesu , więc używam IF i GOTO, problem polega na tym, że goto łamie pętlę , Próbowałem znaleźć inne rozwiązania, ale nic nie dostałem, mój kod wykonuje pętlę, następnie sprawdzam, czy działa uruchomiony proces, jeśli prog.exe nie jest uruchamiany, to kontynuuję pętlę, ale nie chcę zerwać głównej pętli, czy istnieje rozwiązanie? czy jakaś alternatywa?plik wsadowy: goto in for loop

@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) 
) 

Odpowiedz

17

Wewnątrz pętli można użyć wywołania podprogramu, dozwolone są pozycje goto.
Pętla nie zostanie przerwana przez wywołanie podprogramu.

@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

idealna odpowiedź, dziękuję – Leo92

Powiązane problemy