2012-06-24 199 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