我正在尝试使用PSLIST和PSKILL查找并杀死运行中的进程,但是无法正确设置errorlevel。根据我的操作方式,它会被卡在0或1上。我最初使用Taskkill和Tasklist命令使代码工作,但是代码必须在Windows 2000和XP上运行。我同时在运行notepad++编辑批处理文件。以下代码不能区分notepad++和notepad.exe。
上面的代码卡在了0。当我将FIND命令的那一行改为FINDSTR,如下所示:
有没有办法让PSLIST和FIND或FINDSTR命令找到完全匹配并返回正确的错误级别?
@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命令找到完全匹配并返回正确的错误级别?
PSLIST "notepad" 2>NUL
我去掉了 FIND 命令,现在似乎返回了正确的错误级别。谢谢。 - ucfmat