Системное администрирование
Нужен скрипт который проверял бы состояние службы и если она не запущена, запускал бы её. Спасибо.
Есть служба в windows server 1c mobile assistance она периодически останавливается. Вот хотелось бы такой скрипт который проверял бы статус службы и если она остановленна или не запущена, запускал бы её.
Как вариант с "уведомлением" и проверкой состояния.
@echo off
set service=имя_вашей_службы
for /f "skip=3 tokens=1-3,* delims= " %%i in ('sc query %service%') do (
if not %%k==4 (echo %service% : Abnormal state =^> starting...&sc start %service%) else (echo %service% : Normal state)
exit
)
echo %service% : not found(?)
Как это работает: sc query запрашивает состояние службы и возвращает ответ что-то вроде
Имя_службы: ClickToRunSvc
Тип : 10 WIN32_OWN_PROCESS
Состояние : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
Код_выхода_Win32 : 0 (0x0)
Код_выхода_службы : 0 (0x0)
Контрольная_точка : 0x0
Ожидание : 0x0
Анализируем вывод. skip=3 пропускает первые строки вывода, анализируя строку "Состояние" и разбивает её по пробелам. соотв. смотрим код состояния в %%k
4 => служба в рабочем состоянии.
Если она не равна 4 - пишем ненормальное состояние и пробуем её запустить. иначе пишем нормальное состояние.
Т. к. остальные строчки нас не интересуют - тут-же выходим из .cmd
Почему так - ведь можно было findstr состояние и т. д. - код не привязан к языку на ОС. Будет работать и на англ. версии и на русской и на китайской =)
Если не нужен вывод от команды запуска службы подправьте sc start %service%>nul
ЗЫЖ Обратите внимание - имя не равно "отображаемое имя" и "описание". Надо ставить вот это:

@echo off
set service=имя_вашей_службы
for /f "skip=3 tokens=1-3,* delims= " %%i in ('sc query %service%') do (
if not %%k==4 (echo %service% : Abnormal state =^> starting...&sc start %service%) else (echo %service% : Normal state)
exit
)
echo %service% : not found(?)
Как это работает: sc query запрашивает состояние службы и возвращает ответ что-то вроде
Имя_службы: ClickToRunSvc
Тип : 10 WIN32_OWN_PROCESS
Состояние : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
Код_выхода_Win32 : 0 (0x0)
Код_выхода_службы : 0 (0x0)
Контрольная_точка : 0x0
Ожидание : 0x0
Анализируем вывод. skip=3 пропускает первые строки вывода, анализируя строку "Состояние" и разбивает её по пробелам. соотв. смотрим код состояния в %%k
4 => служба в рабочем состоянии.
Если она не равна 4 - пишем ненормальное состояние и пробуем её запустить. иначе пишем нормальное состояние.
Т. к. остальные строчки нас не интересуют - тут-же выходим из .cmd
Почему так - ведь можно было findstr состояние и т. д. - код не привязан к языку на ОС. Будет работать и на англ. версии и на русской и на китайской =)
Если не нужен вывод от команды запуска службы подправьте sc start %service%>nul
ЗЫЖ Обратите внимание - имя не равно "отображаемое имя" и "описание". Надо ставить вот это:

Сергей Коромыслов
Спасибо. То что нужно
простейший вариант - но, правда, неизящный - периодически выполнять
net start имя_службы
net start имя_службы
Похожие вопросы
- Все знают что из cmd скрипта возможно запустить и vbs и js и hta к примеру, возможно ли из vbs вызвать cmd скрипт?!
- Нужна помощь с созданием скрипта под windows
- Мне нужна помощь с AHK скриптом!
- Какие скрипты vbs запускаются автоматически при загрузке Windows или некоторых программ (н-р MS Word)?
- Установка Windows производиться через CMD. Помогите доработать скрипт.
- Создание vbs-скрипта ...
- Кто-нибудь может выручить скриптом для Excel?
- Купил vps вместо vds, как запустить на нем софт?
- Не могу запустить open server, не запускается apache и mysql
- Как запустить с помощью команды Windows 10 (cmd, bat), графический интерфейс?