Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
sam6780
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 163
1

Когда процесс пропал, как - по таймеру - запустить программу снова?

10.08.2017, 17:22. Просмотров 433. Ответов 8
Метки нет (Все метки)

Здравствуйте. Уважаемые форумчане. У меня есть программа (назовем ее "123"), которая запускает одну из нескольких под программ (из других директорий) - рандомно, и так должно быть! НО Дело в том, что название процесса (в диспетчере) тех подпрограмм называются одинаково. (Назовем процесс: "start" ). Но время от времени тот процесс выключается. Подскажите пожалуйста: что нужно прописать в БАТ файле, что бы BAT файл проверял, через опрд. время, запущен ли процесс в диспетчере и если он пропал то просто восстановить его путем запуска программы "123" восстановливать пробовал пару кодов: ничего не дало...

Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
setlocal ENABLEDELAYEDEXPANSION
Set Process=start.exe
tasklist | Find /i "%Process%.exe" || (goto Else)
:THEN
Exit
Goto end
:ELSE
start C:\Pf\D\123.exe monitor off
Exit
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
chcp 1251
 
set ProcessName=""start""
:m1
cls
TaskList /FI "ImageName EQ %ProcessName%" | Find /I %ProcessName%>nul||(
rem Задержка через ping
ping localhost -w 10000 > nul
rem стартуем приложение, если не найдено (при необходимости прописываем параметры запуска)
start C:\Pf\D\123.exe
)
goto m1
Что то окна на онка вылазят и ничего не выходит. Может из двух как то слепить один можна. Или вообще другой какой сделать. Подскажите .... Спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2017, 17:22
Ответы с готовыми решениями:

Если процесс завершился, запустить снова
Например запущен firefox.exe Каждую секунду проверяется запущена ли она. Если нет, то запустить....

Как не прерывая программу запустить процесс?
День добрый, есть проблема следующего плана: Необходимо программно (по результатам выбора...

Как запустить программу как фоновый процесс
Здравствуйте! Нужно написать программу, которая будет запускаться как фоновый процесс, то есть...

Снова Alarm Manager: как запустить на API выше 19-го?
Задача, нужно что бы задание выполнялось в определенное время с интервалом в один день, если...

Как запустить процесс
Хочу с формы запустить файл мп3. Какой контрол позволяет запустить файл... любой(файл)? Думал...

8
alpap
1913 / 1408 / 465
Регистрация: 26.04.2015
Сообщений: 4,799
10.08.2017, 17:58 2
sam6780,
проверка каждую секунду, можно изменить на другое, если надо 10сек - изменить параметр -n 11
Windows Batch file
1
2
3
@echo off
set "p=Подпрограмма.exe"
cmd/c for /l %%i in () do @tasklist /fi "imagename eq %p%"^|findstr/v :^|^| (start "" "123.exe"^& exit/b)^&^>nul ping -n 2 127.0.0.1
0
sam6780
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 163
10.08.2017, 19:23  [ТС] 3
Подставил свое название в "р=Подпрограмма. exe это процесс который должен запуститься, когда выключается. А 123.ехе
Программа основная, что запускает подпрограмму (процесс время от времени исчезающий).
Но к сожалению почему то не работает.
123. ехе запускается в самом начале, но стоит мне закрыть "процесс". Как ничего не происходит
0
alpap
1913 / 1408 / 465
Регистрация: 26.04.2015
Сообщений: 4,799
10.08.2017, 23:35 4
Так запускается "подпроцесс.exe"?
Windows Batch file
1
start "" "123.exe"
Запустив это - видим "подпроцесс.exe"?
Windows Batch file
1
2
3
4
@echo on
set "p=подпроцесс.exe"
tasklist /fi "imagename eq %p%"
pause
процесс "123.exe" после запуска "подпроцесс.exe" закрывается или тоже продолжает работать?

производились ли какие-то изменения в моем коде кроме замены имени процесса?
0
10.08.2017, 23:35
sam6780
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 163
11.08.2017, 07:41  [ТС] 5
Так запускается "подпроцесс.exe"?

Bash
1
start "" "123.exe"
Да. "p=подпроцесс.exe" запускается так


Запустив это - видим "p=подпроцесс.exe"?

Bash
1
2
3
4
@echo on
set "p=подпроцесс.exe"
tasklist /fi "imagename eq %p%"
pause
появляеться в диспетчере без проблем.

процесс "123.exe" после запуска "p=подпроцесс.exe" закрывается или тоже продолжает работать?
Продолжает работать. Просто после того как закроется "p=подпроцесс.exe" То автоматически сам не запустится. Для этого надо:

1). Проверить на наявность "p=подпроцесс.exe" . Если таковой имеется то никаких действий не производить
2). Если "p=подпроцесс.exe" нет в списке процессов - то нужно его запустить через "123.exe" Но! для этого нужно:
3). Удалить из процессов "123.exe" и запустить его снова. Иначе этих процесса становиться два, три, и т.д. )

удалить старый процесс в диспетчере

производились ли какие-то изменения в моем коде кроме замены имени процесса?
ВОт только время разве, что:

@echo off
set "123.exe"
cmd/c for /l %%i in () do @tasklist /fi "imagename eq %p%"^|findstr/v :^|^| (start "" "123.exe"^& exit/b)^&^>nul ping -n 11 127.0.0.1
0
alpap
1913 / 1408 / 465
Регистрация: 26.04.2015
Сообщений: 4,799
11.08.2017, 08:30 6
Цитата Сообщение от sam6780 Посмотреть сообщение
появляеться в диспетчере без проблем.
меня интересовало в окне cmd

Цитата Сообщение от sam6780 Посмотреть сообщение
set "123.exe"
непонятная неправильная запись

вот код, удовлетворяющий требования всех 3х пунктов
Windows Batch file
1
2
3
4
@echo off
set "osn_p=123.exe"
set "p_p=подпроцесс.exe"
cmd/c for /l %%i in () do @tasklist /fi "imagename eq %p_p%"^|findstr/v :^|^| (taskkill /f /im "%osn_p%"^& start "" "%osn_p%")^&^>nul ping -n 11 127.0.0.1
0
sam6780
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 163
13.08.2017, 04:49  [ТС] 7
alpap, Спасибо! все отлично работает. Только процесс - "123.exe" просто дублировался в процессах - по этому я попробовал дописать :
Windows Batch file
1
set "osn_p1=123.exe"
. ..

Получилось. Теперь ГУД!

Вобщем преобразовалось в вот такое.

Windows Batch file
1
2
3
4
set "osn_p=C:\PF\D\123.exe"
set "osn_p1=123.exe"
set "p_p=подпроцесс.exe"
cmd/c for /l %%i in () do @tasklist /fi "imagename eq %p_p%"^|findstr/v :^|^| (taskkill /f /im "%osn_p1%"^& start "" "%osn_p%")^&^>nul ping -n 11 127.0.0.1
Спасибо Тебе больше )


Теперь другая проблема появилась: Я файл запускал через (допустим "run.vbs"), что бы скрыть процесс. Но в диспетчере задач он есть как cmd.bat ( Что бы можно сделать , что бы не было его видно или может изменть на какой другой как то ... ???
0
alpap
1913 / 1408 / 465
Регистрация: 26.04.2015
Сообщений: 4,799
13.08.2017, 11:54 8
можно первой строкой в коде:
Windows Batch file
1
nircmd win hide title "%ComSpec%"
но nircmd.exe надо скачать (есть и на форуме) кинуть в system32 и разок запустить.
или
name.vbs
Windows Batch file
1
WScript.CreateObject("WScript.Shell").Run """%comspec%"" /c """ & WScript.Arguments.Item(0) & """", 0, False
а bat подавать первым параметром: name.vbs file.bat
существует и еще немало способов, здесь на форуме найдете при желании.

Добавлено через 4 минуты
Цитата Сообщение от sam6780 Посмотреть сообщение
Но в диспетчере задач он есть как cmd.bat
а в дисп задач процесс конечно будет виден и чем он мешает, интересно. Скрывать именно его задача сложнее, но смысла в этом нет. А вот давать имя файлу: "cmd", а также имена команд очень не рекомендую, проблемы могут быть довольно серьезные и сложно отследить откуда.
1
sam6780
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 163
13.08.2017, 17:23  [ТС] 9
попробую. Там уже не так сложно. Разберусь уже ). А так все фактически. Тот результат, что мне нужно было - получился отлично... . помог очень Спасибо большое Человеческое alpap, .
0
13.08.2017, 17:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2017, 17:23

Как запустить процесс?
Process.Start("execute.exe") Пробовал но когда загружалась форма сам процесс не запускался...........

Как запустить процесс из TextBoxa
У меня есть три окошка TextBoxa. Я ввожу число в первый TextBox, затем Enterom или Tabom перехожу...

Как запустить процесс от процесса?
Есть программы 1.exe и 2.exe Как запустить 2.exe от 1.exe ?


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru