2012-06-24 195 views
10

我有一個批處理文件,其中有for循環,在循環中我必須等待進程結束 所以我使用IF和GOTO,問題是goto打破循環,我試圖找到其他的解決方案,但我沒有得到任何東西,我的代碼做了一個循環,然後我檢查一個進程正在運行,如果prog.exe不runnig然後繼續循環,但我不想打破主循環,有沒有解決方案?還是其他選擇?批處理文件:轉到for循環

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

回答

17

在循環內部,您可以使用調用子例程,但有goto的允許。
循環不會因調用子程序而中斷。

@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

完美答案,謝謝 – Leo92