Следующий пакетный файл демонстрирует, как эту задачу можно выполнить с помощью пакетного файла с помощью команды tasklist (документация по SS64), документированной также Microsoft на странице Команды Windows , содержащей ссылку на 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
Первые три строки вывода TASKLIST пропускаются FOR из-за skip=3
.Запустите в окне командной строки tasklist /FI "IMAGENAME eq cmd.exe" /FI "WINDOWTITLE eq dividing product proc"
, чтобы понять, почему первые три строки вывода TASKLIST не представляют интереса для подсчета cmd.exe
процессов с заголовком окна dividing product proc
.delims=
используется для отключения режима разделения строк путем указания пустого списка разделителей для очень быстрой обработки строк.
Также можно использовать TASKLIST параметр /NH
(Без заголовка), чтобы получить список процессов, выводимых без заголовка, как предложено sst (спасибо), что делает использование 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 /?
tasklist /?