批处理文件:转到for循环

时间:2012-06-24 12:26:21

标签: batch-file goto

我有一个批处理文件,其中有一个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)
)

1 个答案:

答案 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