web-dev-qa-db-ja.com

バッチファイル:forループに移動

Forループを含むバッチファイルがあります。ループでは、プロセスが終了するのを待つ必要があるため、IFとGOTOを使用します。問題は、gotoがループを壊していることです。他の解決策を見つけようとしましたが、取得できませんでした。何でも、私のコードはループを実行していて、実行中のプロセスをチェックします。prog.exeが実行されていない場合は、ループを続行しますが、メインの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)
)
12
Leo92

ループ内では、サブルーチンの呼び出しを使用できます。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
18
jeb