我如何检查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"
。