如何计算具有特定标题的cmd.exe进程?

时间:2018-12-17 04:50:23

标签: batch-file cmd

dividing product proc commands

我想计算标题为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?

1 个答案:

答案 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 /?