首页 文章

批处理文件:转到for循环

提问于
浏览
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)
)

1 回答

  • 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
    

相关问题