実行中のプロセスを見つけて、PSLIST と PSKILL を使用して強制終了しようとしていますが、エラーレベルを適切に設定できません。方法によっては、0 または 1 でスタックします。元々、Taskkill コマンドと Tasklist コマンドを実行するコードがありましたが、このコードは Windows 2000 と XP で実行する必要があります。
また、バッチファイルを編集するためにメモ帳++を実行しています。次のコードは、notepad++ と notepad.exe を区別していません。
@echo off
reg.exe ADD "HKCU\Software\Sysinternals\PsKill" /v EulaAccepted /t REG_DWORD /d 1 /f >NUL
reg.exe ADD "HKCU\Software\Sysinternals\PsList" /v EulaAccepted /t REG_DWORD /d 1 /f >NUL
rem just to see output of pslist
PSLIST "notepad" 2>NUL
ECHO.
ECHO.
PSLIST "notepad" 2>NUL | FIND /I /N "notepad"
echo The error level is %errorlevel%
IF %errorlevel% EQU 0 (
ECHO Notepad is running and will be terminated.
ECHO.
PSKILL "notepad.exe" 2>NUL
)
IF %errorlevel% EQU 1 (
ECHO Notepad was not running.
ECHO Starting Notepad now...
ECHO.
start "" "notepad.exe"
)
Pause
EXIT
上記のコードは 0 でスタックします。FIND コマンドで行を FINDSTR に変更するとPSLIST "notepad" 2>NUL | FINDSTR /I /N "notepad.exe"
、1 でスタックします。
PSLIST および FIND または FINDSTR コマンドを取得して、完全に一致する正しいエラーレベルを返す方法はありますか?