批处理文件:在FOR循环中使用GOTO

16

我有一个包含FOR循环的批处理文件。在循环中,我必须等待一个进程结束,我使用了IF和GOTO来实现。问题是GOTO打破了循环。我尝试寻找其他解决方案,但没有找到任何东西。应该如何解决?

@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)
)
1个回答

22

在循环中,你可以使用call调用一个子程序,也允许使用goto
call调用子程序不会打破循环。

@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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接