2012-06-24 14 views
10

私はバッチファイルを持っています。ループ内にforループがあります。終了するまでプロセスを待つ必要があります。 IFと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) 
) 

答えて

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 
+0

完璧な回答、ありがとう – Leo92

関連する問題