我如何检查缩放.exe是否仍在运行,如果是我想杀死它



我如何检查Zoom.exe是否仍在运行,然后如果它运行,我想在批处理脚本中杀死它下面是我的代码不工作,它确实打印Process not running

QPROCESS "zoom.exe">NUL
IF (%ERRORLEVEL% EQU 0) (ECHO "Process running" & TASKKILL /F /IM "Zoom.exe") ELSE (ECHO "Process not running")
setlocal EnableDelayedExpansion
set "imgname=Zoom.exe"
set "opt=tokens=* delims="
echo:
set /a "count=0"
for /f "%opt%" %%i in ('tasklist /fi "imagename eq !imgname!" /fi "status eq running"') do (
echo %%i
set /a "count+=1"
)
set /a "count-=2"
echo:
echo There are !count! !imgname! processes running.
echo:
if "!count!" gtr "0" (call taskkill /f /fi "imagename eq !imgname!")
endlocal

编辑:

一些解释,但它很容易。此外,为了更好地了解自己,输入tasklist /?taskkill /?并检查@Mofi的建议。

基本上,使用for /f循环,您可以"读取"(结束echo,通常调用命令时)命令的输出(在' '中传递)。

同时使用set /a "count+=1"计算输出行数。这样做是因为在这种情况下输出格式是"固定"的。因此,您不能将这个句子扩展到其他命令。也就是说,tasklist命令至少有2行(在进程未运行的情况下,尝试使用不存在的imagename),或者更多。如果更多,则表示进程正在运行,因此要计算前两行取出的数量(是的,仍然是2行,但具有不同的信息,例如进程未运行,这就是在这种情况下工作的原因),即set /a "count-=2"

此时,您只需要检查输出中还剩下多少行。如果为0,表示没有进程在运行,否则,杀死它/它们。

最新更新