我想计算标题为dividing product proc
的cmd.exe进程。我能够像下面这样计算cmd.exe:
for /f "tokens=1 delims=" %%# in ('qprocess^|find /i /c /n "cmd.exe"') do (
set number=%%#
)
但是此代码计数每个cmd.exe
。有没有一种方法可以用其标题来计算cmd.exe?
答案 0 :(得分:3)
以下批处理文件演示了如何使用命令tasklist(SS64文档)使用批处理文件来完成此任务,该命令也由Microsoft在Windows Commands页面上记录,其中包含指向tasklist的链接文档。
@echo off
set "ProcessCount=0"
for /F "skip=3 delims=" %%I in ('%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq cmd.exe" /FI "WINDOWTITLE eq dividing product proc" 2^>nul') do set /A ProcessCount+=1
echo Number of cmd.exe processes with window title "dividing product proc": %ProcessCount%
echo/
pause
由于skip=3
, FOR 跳过了 TASKLIST 的前三行输出。在命令提示符窗口tasklist /FI "IMAGENAME eq cmd.exe" /FI "WINDOWTITLE eq dividing product proc"
中运行,以查看为什么 TASKLIST 的前三行输出对计算窗口标题为cmd.exe
的{{1}}个进程不感兴趣。 dividing product proc
用于通过指定空的定界符列表来更快地处理行,从而禁用行拆分行为。
还可以使用{strong> TASKLIST 选项delims=
(无标题)来获取不带标题的输出进程列表,如sst所建议(感谢),这使得无需使用/NH
。
skip=3
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
@echo off
set "ProcessCount=0"
for /F "delims=" %%I in ('%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq cmd.exe" /FI "WINDOWTITLE eq dividing product proc" /NH 2^>nul') do set /A ProcessCount+=1
echo Number of cmd.exe processes with window title "dividing product proc": %ProcessCount%
echo/
pause
echo /?
for /?
pause /?
set /?