Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Остановка службы при запуске определенного процесса и запуск после его завершения.

Ответить
Настройки темы
CMD/BAT - Остановка службы при запуске определенного процесса и запуск после его завершения.

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


К примеру служба носит название "1", а процесс "2". Служба работает, а процесс не запущен. Как только процесс запустился, служба сразу останавливается, а как только он завершился, служба сразу запускается.

Отправлено: 03:34, 10-02-2018

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
set "proc=process.exe"
set "serv=service"

cmd /c for /l %%i in () do @tasklist /fi "imagename eq %proc%"^|findstr /v :^&^& (sc stop "%serv%"^& exit /b)^&^>nul timeout /t 1 /nobreak
cmd /c for /l %%i in () do @tasklist /fi "imagename eq %proc%"^|findstr /v :^|^| (sc start "%serv%"^& exit /b)^&^>nul timeout /t 1 /nobreak

pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:05, 10-02-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо большое, все работает Только net вместо sc поставить нужно.

Отправлено: 14:58, 10-02-2018 | #3


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


А можно узнать как сделать так, чтоб мониторились не один, а несколько процессов и при появлении одного из этих процессов сначала завершался определенный процесс, а уже потом останавливалась служба?

Отправлено: 11:28, 17-03-2018 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


по идее как-то так:
Код: Выделить весь код
@echo off
set "proc=process.exe"
set "serv=service"

cmd /c for /l %%i in () do @for %%p in (proc1 proc2 proc3) do @tasklist /fi "imagename eq %%p"^|findstr /v :^&^& (taskkill /f /im "%proc%"^& sc stop "%serv%"^& exit /b)^&^>nul timeout /t 1 /nobreak

pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:02, 18-03-2018 | #5


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Работает, спасибо Можно сделать чтоб при закрытии одного из процессов запускалась служба? Так пытался сделать, не получилось Запускается в любом случае.
Код: Выделить весь код
set "proc=process.exe"
set "serv=service"

cmd /c for /l %%i in () do @for %%p in (proc1 proc2 proc3) do @tasklist /fi "imagename eq %%p"^|findstr /v :^&^& (taskkill /f /im "%proc%"^& net stop "%serv%"^& exit /b)^&^>nul timeout /t 1 /nobreak
cmd /c for /l %%i in () do @for %%p in (proc1 proc2 proc3) do @tasklist /fi "imagename eq %%p"^|findstr /v :^|^| (net start "%serv%"^& exit /b)^&^>nul timeout /t 1 /nobreak

pause

Отправлено: 05:31, 19-03-2018 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Kukuruzo666,
проверил такой строкой на живом примере
Код: Выделить весь код
cmd /c for /l %%i in () do @for %%p in (xnview.exe calc.exe) do @tasklist /fi "imagename eq %%p"^|findstr /v :^|^| (echo Запуск^& exit /b)^&^>nul timeout /t 1 /nobreak
при запущенных процессах xnview.exe calc.exe вижу true вывод tasklist, как и положено, а при закрытии любого процесса, вывод строки echo Запуск
так что смотрите что делаете не так
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:55, 19-03-2018 | #7


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Понял почему не работало. Сразу все указанные процессы должны быть запущены, а чтоб работало только при одном из указанных нельзя сделать? И чтоб если запущены все, то команда выполнялась только после закрытия всех процессов.

Последний раз редактировалось Kukuruzo666, 20-03-2018 в 13:42.


Отправлено: 13:30, 20-03-2018 | #8


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


на cmd это будет некрасиво, много и жестоко для процессора
или детально распишите какая конкретная конечная цель задачи или поменяйте условия решения проблемы
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:53, 20-03-2018 | #9


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата Kukuruzo666:
только после закрытия всех процессов »
иначе это будет звучать как, если из заданных процессов работает хотя бы один - нет запуска, закрыты все - запуск:

Код: Выделить весь код
@echo off
set "pr1=proc1.exe"
set "pr2=proc2.exe"
set "serv=service"

cmd /c for /l %%i in () do @tasklist^|findstr /c:"%pr1%" /c:"%pr2%"^|^| (net start "%serv%"^& exit /b)^&^>nul timeout /t 1 /nobreak
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:59, 20-03-2018 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Остановка службы при запуске определенного процесса и запуск после его завершения.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Остановка и запуск службы TERMINAL AutoIt 44 05-01-2018 15:36
CMD/BAT - [решено] мониторинг пинга+выполнение команды после завершения процесса sergeybutakov Скриптовые языки администрирования Windows 8 10-03-2017 18:26
CMD/BAT - [решено] Выполнение следующей команды, после завершения определенного процесса Weterok Скриптовые языки администрирования Windows 23 18-11-2015 13:58
2008 R2 - Запуск службы для определенного пользователя 23455432 Windows Server 2008/2008 R2 7 05-03-2014 17:14
CMD/BAT - [решено] Мониторинг процесса, в случаи его отсутствия повторный запуск. dvassilyev Скриптовые языки администрирования Windows 2 06-12-2012 12:42




 
Переход