我有一个批处理文件,其中有一个for循环,在循环中我必须等待进程结束 所以我使用IF和GOTO,问题是goto打破循环,我试图找到其他解决方案,但我没有得到任何东西,我的代码正在做一个循环然后我检查一个进程运行,如果prog.exe不runnig然后继续循环,但我不想打破主循环,是否有解决方案?或任何其他选择?
@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)
)
答案 0 :(得分: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