我试图找到一个正在运行的进程并使用 PSLIST 和 PSKILL 杀死它,但是,我无法正确设置错误级别。根据我执行此操作的方式,它会卡在 0 或 1 上。我最初的代码可以运行 Taskkill 和 Tasklist 命令,但代码必须在 Windows 2000 和 XP 上运行。
我还运行 notepad++ 来编辑批处理文件。以下代码不区分 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 命令返回具有完全匹配的正确错误级别?