Технический форум

Технический форум (http://www.tehnari.ru/)
-   Форум программистов (http://www.tehnari.ru/f22/)
-   -   Bat-файл для мониторинга работы exe-файла (http://www.tehnari.ru/f22/t247454/)

stars1981 08.07.2016 12:30

Bat-файл для мониторинга работы exe-файла
 
Доброго времени суток!!! Помогите пожалуйста с написанием батника. Нужно: 1. запустить exe файл(это имеется)
2. И т.к Firefox прекращает свою работу(при определённом кол-ве занятой оперативной памяти), то нужно снова запустить этот же экземпляр Firefox

Я предполагаю что нужно при запуске exe файла(FirefoxLikesrock.exe) запоминать id запустившегося процесса(если это возможно конечно) и в дальнейшем мониторить работу этого процесса по id, как токлько процесса нет в работе, запускать exe по новой.

Я в кодинге не силён (только учусь на примерах), помогите пожалуйста решить такую задачу.

Заранее благодарен!

Гризлик 08.07.2016 13:11

Я конечно в кодинге тоже не силен. Но выглядеть это будет как-то так помоему (вместо звездочек имя файла вписать)
Код:

@echo off
:Run
tasklist |find "*имя файла*"
if errorlevel 1 goto NoRun
goto Run
:NoRun
start * полный путь к файлу для запуска*
goto Run

П.С. Правда в этом варианте нужный файл будет запускаться всегда. Когда нужно и ненужно:) Как это исправить незнаю.

stars1981 08.07.2016 13:43

Цитата:

Сообщение от Гризлик (Сообщение 2396657)
Когда нужно и ненужно

В смысле? Даже если этот exe уже запущен?
А вообще, спасибо, попробую сейчас.
П.С. дело ещё в том, что процессов Firefox 5 штук работает и нужно запускать тока тот, который был запущен ЭТИМ батником....

Гризлик 08.07.2016 13:58

Цитата:

Сообщение от stars1981 (Сообщение 2396664)
Даже если этот exe уже запущен?

Нет, если процесс окажется запущенным то он ничего делать не будет. В том смысле что если вы сами захотите закрыть Мозилу то этот батник её заново запустит независимо от того нужно вам это или нет. Ну если только перед закрытием мозилы сам батник "убивать"

stars1981 08.07.2016 14:12

Цитата:

Сообщение от Гризлик (Сообщение 2396657)
Я конечно в кодинге тоже не силен. Но выглядеть это будет как-то так помоему (вместо звездочек имя файла вписать)


П.С. Правда в этом варианте нужный файл будет запускаться всегда. Когда нужно и ненужно:) Как это исправить незнаю.

Цитата:

Сообщение от Гризлик (Сообщение 2396672)
Нет, если процесс окажется запущенным то он ничего делать не будет. В том смысле что если вы сами захотите закрыть Мозилу то этот батник её заново запустит независимо от того нужно вам это или нет. Ну если только перед закрытием мозилы сам батник "убивать"

Уже понял. Так не пойдёт, т.к. процессы ферифокса все одноимённы и постоянно хоть один да работает, нужно как-то, что бы батник запоминал id запускаемого им же процесса (т.к. при каждом запуске одного и того же exe id меняется) и уже по id смотрел, запущен нужный процесс, если нет то запускал его...

Гризлик 08.07.2016 14:35

Нашел в интернете. На примере Калькулятора. Как я понял даный батник запускает процесс запоминает его PID и потом через определенное время его закрывает

Код:

@echo off
setlocal

set "wmic=wmic process call create "calc" | findstr "ProcessId""
for /f "tokens=2 delims==;" %%i in (' "%wmic%" ') do set "pid=%%i"

echo %pid%

timeout /t 3
taskkill /pid %pid%

Осталось только под ваш случай подредактировать его и мне кажется подойдет.

stars1981 08.07.2016 14:46

Спасибо большое!!! Думаю пойдёт. Сейчас с редактированием помучаюсь, думаю вечером "победю" и отпишусь о результате.

stars1981 08.07.2016 16:24

Цитата:

Сообщение от Гризлик (Сообщение 2396679)
Осталось только под ваш случай подредактировать его и мне кажется подойдет.

По идее работает, но похоже нужно и у дочернего процесса id запоминать (не знаите как?). Попробовал с килл, процес с id найденым батником убивает, но бораузер как работал так и продолжает работать...


Часовой пояс GMT +4, время: 10:29.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.