Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Анализ процессов в диспетчере задач через BAT (http://forum.oszone.net/showthread.php?t=336858)

Sargezzz 26-09-2018 18:05 2832994

Анализ процессов в диспетчере задач через BAT
 
Вложений: 1
здравствуйте

У меня сейчас реализован bat файл, который анализирует количество запущенных процессов и если их меньше определенного колва, то стартует необходимый. Но возникла необходимость дополнительного анализа, прежде чем стартовать новый процесс. Анализ необходимо осуществлять по колонке "Command line" (такую можно вывести в дистпетчере задач Винды). Подскажите, как можно анализировать эту колонку? те если колво процессов меньше определенного колва и комманд лайн у запущенных не равна определенной константе, то стартовать новый процесс.

Ниже привожу мой батник на примере calc.exe, а также принт-скрин доп. колонки для анализа:

@echo on
set logfile="C:\BAT\Test\stopstartlog.txt"
setlocal enableextensions enabledelayedexpansion
set sFileName=calc.exe
for /f "usebackq delims=" %%i in (`tasklist.exe /nh /fi "IMAGENAME eq %sFileName%" ^| 2^>nul find.exe /i "%sFileName%" ^| find.exe /c /v ""`) do if %%i lss 2 (start calc.exe)
endlocal
pause


Заранее большое спасибо!

alpap 26-09-2018 19:02 2833000

Sargezzz,
при таком раскладе их надо как-то сортировать
например запущено 10 процессов chrome и 10 notepad, а вроде как 2 всего по большому счету, т.е. закрыть по 1 дочернему - мало что меняется, а по одному одноименному основному - закроется 20, понимаете что имеется ввиду?

YuS_2 26-09-2018 20:48 2833015

Цитата:

Цитата Sargezzz
возникла необходимость дополнительного анализа, прежде чем стартовать новый процесс. Анализ необходимо осуществлять по колонке "Command line" »

на powershell:
Код:

(gwmi win32_process -filt "name='имя_процесса.exe'").commandline
на cmd тоже возможно использовать WMI, но...

Iska 26-09-2018 22:10 2833023

Sargezzz, майнер автоматизируете, что ли?

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
        `2^>nul wmic.exe Process where "Name = 'calc.exe' and CommandLine = '"C:\\Windows\\system32\\calc.exe" '" get CommandLine /value ^| find.exe /i /c "CommandLine"`
) do set /a iCount = %%i

if defined iCount if %iCount% lss 2 start "" "C:\Windows\system32\calc.exe"

endlocal
exit /b 0


Sargezzz 27-09-2018 11:36 2833102

Iska, очень здорово) спасибо. Я прям очень многому учусь у Вас!!!) спасибо! А подскажите, пожалуйста, на будущее, можно ли искать еще, к примеру, по подтроке в CommandLine? например, на наличие в строке CommanLine символов "calc.exe" или "else.exe" ???

Iska 27-09-2018 17:54 2833176

Цитата:

Цитата Sargezzz
по подтроке в CommandLine? например, на наличие в строке CommanLine символов "calc.exe" »

Код:

… where "Name = 'calc.exe' and CommandLine like '%%calc.exe%%'" …
Сразу обращаю Ваше внимание, что искать нужно в первую очередь по имени исполняемого файла, и только затем уже по части содержимого командной строки, иначе Вы можете получить не совсем те результаты, что ожидались.


Время: 01:53.

Время: 01:53.
© OSzone.net 2001-