15

我有一个带有 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)
)
4

1 回答 1

21

在循环内部,您可以使用 a callto 子例程,goto允许使用 s。
循环不会被子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
于 2012-06-24T12:33:36.057 回答