3

プロセスが実行されているかどうかを確認するファイルがあります。そうでない場合はループし、そうでない場合は行をtxtファイルにエコーします。私の問題は、プロセスが実行されていないときでもループが続くことです。これが私のコードです

:a
Tasklist /v | findstr CMD.exe | findstr LAN 
If ERRORLEVEL==1 goto :done
Goto :a

:done

Echo %USERNAME% has logged out. >>log.txt

エラーレベルが0〜2のifおよびif notステートメントで試してみましたが、ERRORLEVELで何か間違ったことをしたと思います。

4

2 に答える 2

4

そのようなエラーレベルで比較操作を行うことはできません。これを試してください:

If ERRORLEVEL 1 goto :done

また

if %errorlevel% == 1 goto :done

また

if %errorlevel% EQU 1 goto : done

また、FIND または FINDSTR を使用する場合は、引用符が必要です。

Tasklist /v | findstr "CMD.exe" | findstr "LAN" 

条件付き実行も使用できます。

Tasklist /v | find "CMD.exe" | find "LAN" || goto :done
于 2013-05-27T22:33:10.573 に答える