Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6

Цикл проверки существования процессов

08.02.2018, 09:59. Показов 6600. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день ув. форумчани. Необходима CMD команда (одна большая), которая б циклично проверяла существование нескольких процессов (около 10 штук) и в случае их появления выполняла некоторые действия (запускала определенную программу). Подозреваю что нужен цикл for и команда tasklist, но знаний собрать все в кучу у меня не хватает. Если кто напишет полную команду с примерами, могу скинуть небольшое спасибо на киви кошелек. =)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2018, 09:59
Ответы с готовыми решениями:

По результатам проверки существования программ, имена которых записаны в файле, выполнить указанные действия
Имеется файл-список имен программ. • нужно прочитать содержимое файла, проверить существование каждой программы • если программа...

Скрипт для проверки запущенных процессов и последовательного запуска батников
В одной папке находится 4 батника и сама программа, нужен скрипт который при запуске запускает батник "1" запуская...

Служба: добавить цикл проверки процессов и если процесс найден убить.
Приветствую всех! помогите если можете. У меня есть служба, в нее нужно добавить цикл проверки процессов и если процесс найден убить. За...

11
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
08.02.2018, 13:27
Лучший ответ Сообщение было отмечено NogoLizer как решение

Решение

NogoLizer, штатными средствами командной строки вряд ли можно одновременно остлеживать до десяти процессов одновременно, тем более что существует определенный порог "вложенности" команд, исчерпав который система попросту прервет исполнение цикла. На вид может показаться что примерным решением задачи будет нечто вроде:
Code
1
for /l %i in () do @((tasklist | findstr /ir /c:"proc1" /c:"proc2" ...)&&(@start "" myapp.exe&exit)||ping -n 1 localhost >nul)
Однако при более детальном рассмотрении становятся очевидным, что данное выражение, во-первых, мониторит в системе появление процесса с одним из указанных в findstr имен и если хотя бы одно из соответствий найдено, цикл прервется, но, во-вторых, при исчерпании некоторых системных квот и долгом отсутствии нужного процесса, система вполне может прервать процесс-родитель самостоятельно. Иными словами, командная строка расширенными средствами мониторинга процессов не обладает что не исключает наличия стороннего софта. Для этих целей лучше использовать PowerShell.
2
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
08.02.2018, 14:19  [ТС]
greg zakharov,
во-первых, мониторит в системе появление процесса с одним из указанных в findstr имен и если хотя бы одно из соответствий найдено, цикл прервется
Это мне подходит, необходимо чтобы хотя бы при обнаружение одного из указанных процессов выполнялись действия. Еще интересно как задать ограниченное кол-во проверок ( не бесконечный цикл). Дабы если через минуту или две процессы не обнаруживались выполнение шло дальше. А вот по-поводу "система вполне может прервать процесс-родитель самостоятельно.", никогда об таком не слышал. Если поможете организовать средствами PS, мне тоже подходит. Но я даже представления не имею о там как это сделать . Спасибо.
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
08.02.2018, 15:19
Цитата Сообщение от NogoLizer
Еще интересно как задать ограниченное кол-во проверок ( не бесконечный цикл).
Также циклом, только объявляете внешний счетчик, в for указываете начало и шаг, и всякий раз, когда происходит запуск приложения делаете инкремент счетчика. Это в случае ограничения количества запусков прриложения.
Цитата Сообщение от NogoLizer
А вот по-поводу...
Стек вызовов. Там тоже свои нюансы.
Цитата Сообщение от NogoLizer
Если поможете организовать средствами PS, мне тоже подходит.
Самый простейший пример (отслеживание по одному процессу).
PowerShell
1
while(1){if(!(ps|?{$_.processname -match '^(notepad|charmap)$'})){sleep -s 3}else{'run';break}}
Если появится в процессах notepad или charmap, цикл будет прерван, в противном случае делается пауза в три секунлы и снова опрашивается система. Если все же требуется отслеживать появление сразу десяти процессов, создаете контейнер (массив, хэш) и сверяете с текущим снимком процессов. Все это можно сделать в отдельном потоке. Или еще проще, создать job.
0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
08.02.2018, 15:41  [ТС]
greg zakharov, в теории понятно. Правда от вашего простого примера с powershell мне аж плохо стало xD, чувствую себя идиотом. Для человека явно не привыкшему к такому рода синтаксису даже простая задача "создать контейнер и сверить с текущим снимком процессов" не простая. Но, а вам большее спасибо за наводку и код. Любая работа должна оплачиваться, так что все-же, куда я могу сбросить вам свое скромное спасибо?)
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
08.02.2018, 15:58
NogoLizer, у меня нет киви-кошелька, во-вторых, даже если я помог чем-то, не исключено что завтра помощь будете оказывать мне уже Вы (сами того не ведуя).
0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
08.02.2018, 16:58  [ТС]
greg zakharov, тогда просто еще раз спасибо! И последний вопрос.

Немного разобрался, добавил счетчик, правда с массивами дичь пока выходит, но написал так, вроде работает.

while(($count -lt 50)){if(!(ps|?{$_.processname -match '^(proc1|proc2|proc3)$'})){ $count = $count + 1; sleep -s 1}else{exit}}; ipconfig /all

Можно ли написать все 10 процессов с помощью оператора |? Насколько это грамотно спрашивать не приходиться =))) Главное, будет ли работать. По-поводу помощи вам, я пишу софт на c# на заказ, так если что, обращайтесь.
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
08.02.2018, 18:12
Лучший ответ Сообщение было отмечено Joey как решение

Решение

NogoLizer, верно ли я Вас понимаю, что требуется фиксированное количество итераций проверки? Если так, можно смело избавляться от while:
PowerShell
1
0..12|%{$_}
Синтаксис PowerShell старше второй версии оброс сахаром, и к свойствам коллекций объекта можно обращаться напрямую, без оператора ? (представляющего собой альяс командлета Where-Object):
PowerShell
1
(ps).ProcessName
То же, но в PSv2:
PowerShell
1
ps|?{$_.ProcessName}
Оператор -match - по сути более упрощенная версия знакомого Вам по С# метода Matches класса Regex, то есть в коде Вы просто пытаетесь отыскать хотя бы один процесс, соответсвующий заданному регулярным выражением критерию, поэтому хоть десять, хоть тридцать имен вы опишите в нем, результат будет сами знаете какой.
Вообще, PS хорошо документирован, да и обсуждать его лучше в соответствующей ветке.
1
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
08.02.2018, 18:57  [ТС]
greg zakharov, спасибо за ответ. Удачи!
0
08.02.2018, 22:22

Не по теме:

NogoLizer, ответ помог? Или Вы просто отмахнулись от него?

0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
08.02.2018, 22:48  [ТС]
Joey, ответ помог. Но если есть еще варианты с радостью выслушаю.

Добавлено через 51 секунду
Joey, Смысл мне отмахиваться от того, кто мне помогает?))
0
Джоуи
 Аватар для Joey
1083 / 645 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
08.02.2018, 22:55
NogoLizer, я спрашиваю в целях модерации, раз помог, то отмечу как лучший ответ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2018, 22:55
Помогаю со студенческими работами здесь

Проверки существования папки
Написать программу проверки существования папки (vbscript) оооочень надо,помогите ребят

Функция проверки существования треугольника
Помогите пожалуйста написать функцию проверки существования треугольника

Не компилируется код проверки существования файла
Добрый день! Пишу функцию, которая может проверить наличие файла, открыть его и прочитать и изменить содержание на PL/SQL. Хочу...

Программная реализация проверки существования языка KC-грамматики
Здравствуйте, в поисках фрагментов кода и всевозможных подсказок часто заглядываю на этот форум, но тут мой мозг напрочь отказался выдавать...

Написать программу проверки существования треугольника с заданными сторонами
написать программу проверки существования треугольника с заданными сторонами


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru