Подсчет экземпляров процесса с использованием Batch - PullRequest
0 голосов
/ 04 января 2011

Я пытаюсь подсчитать количество процессов php-cgi.exe в моей системе на сервере 2003, используя «список задач» и grep для windows .Я хотел бы избежать записи в любые временные файлы.

call set _proc_cnt = tasklist /fi "Imagename eq php-cgi.exe" /nh /fo CSV| grep -c -e "php-cgi"
echo %_proc_cnt%
pause

Вот что я получаю, когда запускаю этот

C:\Users\gm\Desktop>call set _proc_cnt = tasklist /fi "Imagename eq php-cgi.exe" /nh /fo CSV  | grep -c -e "php-cgi"
0

C:\Users\gm\Desktop>echo
ECHO is on.

C:\Users\gm\Desktop>pause
Press any key to continue . . .

У кого-нибудь есть какие-либо советы о том, почему это не работает?

Ответы [ 2 ]

0 голосов
/ 05 января 2011

Вот что я в итоге сделал. Я использовал опубликованный скрипт linuxuser27 и хороший цикл FOR, чтобы получить количество экземпляров процесса, хранящееся в переменной.

FOR /F "tokens=*" %%i IN ('%~dp0count_proc.vbs php-cgi.exe') DO SET _PROC_COUNT=%%i
ECHO %_PROC_COUNT%
PAUSE



А вот опубликованная версия vuxcript linuxuser27, которую я немного подправил, чтобы можно было передать любое имя процесса, которое я хотел бы считать параметром (также убрал бит processName). Я просто назвал этот proc_count.vbs, как вы можете видеть в исходном коде моего командного файла.

Option Explicit
Dim objWMIService, processItems, processName

processName = Wscript.Arguments(0)
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Set processItems = objWMIService.ExecQuery("Select * from Win32_Process where Name='"  & processName & "'")

Wscript.Echo processItems.Count
0 голосов
/ 04 января 2011

Я не уверен, строгие ли ваши требования в отношении этого в пакетном файле, но это довольно легко с помощью сценария VBS и WMI.добавьте ниже к файлу.Сценарий представит диалоговое окно с количеством cmd.exe экземпляров.

Option Explicit
Dim objWMIService, processItems, processName

processName = "cmd.exe"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Set processItems = objWMIService.ExecQuery("Select * from Win32_Process where Name='"  & processName & "'")

Wscript.Echo processName & ": " & processItems.Count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...