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

Прошу подсказать с настройкой батника для проверки и запуска службы

10.03.2021, 12:04. Показов 7829. Ответов 64
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,прошу подсказать правильное написание батника.(код ниже) Тот,что есть срабатывает один раз,чекает состояние службы и если она остановлена ,то запускает ее.НО мне хотелось бы понять, как сделать чтоб батник постоянно чекал состояние службы и запускал ее в случае остановки (я только начал заниматься писанием batch-файла (3 дня читаю и пытаюсь сделать батник) ,может и видел правильные ответы,хотя скрупулезно искал данные,но может как в той шутке "смотрел в книгу,видел фигу"). Так же вопрос как создать конфигурационный файл для батника,если например нужно чекать раз в час и запускать.

Заранее спасибо,надеюсь на ваши подсказки и советы,реально интересно заниматься этим,да и решил что пригодится ,но когда,кажется,все варианты посмотрел решил напрямую написать на форуме.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Echo On
title TEST ROUTER
Set ServiceName=ROUTER
 
MOVE проверка и запуск 3.bat>>log.txt echo %date%; %time:~0,-3%; %%~fi; Successfully || 1>>log.txt echo %date%; %time:~0,-3%; %%~fi; failure
 
:: Получаем состояние службы, проверяем запущена ли она
SC queryex %ServiceName%|Find "STATE"|Find "RUNNING">Nul&&(
    rem Пробуем остановить
    Net stop %ServiceName%>nul||(
        rem Если остановить через net stop не вышло, запрашиваем PID
        For /F "tokens=3" %%A In ('SC queryex %ServiceName%^|Find "PID"') Do (
            rem Убиваем процесс вместе с дочерними, используя полученный PID
            TaskKill /F /T /PID %%A>nul
            rem Задержка, чтобы обновился статус службы после убийства процесса
            Ping -n 4 127.0.0.1>nul
        )
        rem еще раз
        Net stop %ServiceName% 2>nul
    )
)
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
pause
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2021, 12:04
Ответы с готовыми решениями:

Создать батник для запуска другого батника
Здравствуйте, помогите решить проблему Нужно создать bat для запуcка другого bat в автоматическом режиме после его закрытия ...

Команда батника для запуска случайного файла из архива
У меня есть 10 текстовиков. Мне нужно из них сделать SFX архив с батником и текстовиками. Команда у батника должна открыть один из...

Прошу подсказать редактор кода для XP
Прошу подсказать версию софта для установки в Windows XP 32 bits.

64
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 19:43  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Karen87 Посмотреть сообщение
В этом случае событие запуска службы в лог будет добавлено только в случае её успешного запуска
Для отслеживания состояния службы по логам лучше с остановкой.Как раз то, что Вы написали очень удобно.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 19:44
Либо заранее выставляете без диалога, либо скрипт доходит до момента, в котором нужно указать периодичность проверки и после этого уже скрывается
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 19:46  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
А, точно... Я и забыл про счетчик, тогда давайте думать каким образом будете выставлять периодичность проверки?
ух,вопрос для меня интересен ,на третий день осознания batch-файла xD
какие варианты? вроде конфигурационного файла для скрипта? а так же нельзя ,при активации батника чтоб вылетело окно с вопросом о тайминге?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 19:47
Цитата Сообщение от Slom Посмотреть сообщение
какие варианты? вроде конфигурационного файла для скрипта?
Вариант, причём легко реализуемый
Цитата Сообщение от Slom Посмотреть сообщение
а так же нельзя ,при активации батника чтоб вылетело окно с вопросом о тайминге?
А смысл скрытия тогда?
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 19:54  [ТС]
Karen87,

Цитата Сообщение от Karen87 Посмотреть сообщение
Вариант, причём легко реализуемый
до этой стадии мне еще явно далеко)))

Цитата Сообщение от Karen87 Посмотреть сообщение
А смысл скрытия тогда?

я не прочитал ваше сообщение выше и напечатал свое.Имелось ввиду после запуска батника напистаь цифру и после "Enter" спрятать
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 19:58
Цитата Сообщение от Slom Посмотреть сообщение
до этой стадии мне еще явно далеко)))
Вы зря так самокритичны, у Вас для новичка уровень вполне приемлимый и вообще совет на будущее - осваивайте современные инструменты автоматизации
Цитата Сообщение от Slom Посмотреть сообщение
Имелось ввиду после запуска батника напистаь цифру и после "Enter" спрятать
То есть реализуем так?

Добавлено через 20 секунд
Или через конфиг?
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 20:02  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
Вы зря так самокритичны, у Вас для новичка уровень вполне приемлимый и вообще совет на будущее - осваивайте современные инструменты автоматизации
какие посоветуете? да я выбрал батники,как самое простое, вроде как.Перед этим где то три дня пытался понять с чего начать. Python тоже заинтересовал,но PowerShellом тоже логично будет как то заняться.

через конфиг ,если можно.

вопрос дополнительный(ну как всегда сегодня от меня,просто интересно,и Вы знающий человек)
чтоб автоматический запуск батника был его лучше в ярлык перевести и под админом опцию активровать?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 20:17
Цитата Сообщение от Slom Посмотреть сообщение
какие посоветуете? да я выбрал батники,как самое простое, вроде как.Перед этим где то три дня пытался понять с чего начать. Python тоже заинтересовал,но PowerShellом тоже логично будет как то заняться.
Я сам с батников начинал. Вы довольно быстро придёте к осознанию, что их возможности достаточно скудны. Из своего опыта я бы посоветовал смотреть в сторону Powershell, особенно, если Вы ориентированы на продукты Microsoft. Это мощнейший инструмент, который может буквально всё и делает это самое "всё" очень и очень шустро
Цитата Сообщение от Slom Посмотреть сообщение
через конфиг ,если можно.
ок
Цитата Сообщение от Slom Посмотреть сообщение
вопрос дополнительный(ну как всегда сегодня от меня,просто интересно,и Вы знающий человек)
чтоб автоматический запуск батника был его лучше в ярлык перевести и под админом опцию активровать?
Ну подобные операции как в Вашем скрипте конечно из-под админа выполняются. Способ, описанный Вами подойдёт вполне

Добавлено через 5 минут
Через конфиг:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cmdow @ /HID
chcp 1251
title TEST ROUTER
setlocal enableextensions enabledelayedexpansion
for /f "tokens=* delims=" %%a in (%dp0config.txt) do (
    set /A period=%%a*60
)
:process
Set "ServiceName=iQ-ROUTER"
for /f "tokens=* delims=" %%a in ('powershell -executionpolicy bypass -command "(Get-Service %ServiceName%).Status"') do (
    if /i "%%a"=="Stopped" (
        echo !date!; !time:~,-3! служба остановлена>>log.txt
        net start %ServiceName% && echo !date!; !time:~,-3! служба запущена>>log.txt || echo !date!; !time:~,-3! Внимание! Служба не запущена>>log.txt
    )
)
ping localhost -n %period%>nul
goto process
Добавлено через 1 минуту
Примечание.
Рядом со скриптом создаёте файл config.txt, в котором прописываете периодичность проверки в минутах
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 20:22  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
Примечание.
Рядом со скриптом создаёте файл config.txt, в котором прописываете периодичность проверки в минутах
тут я не совсем понял, просто вставлю в него число и все? или туда могу прописать фразу "периодичность проверки работы службы(в минутах)=*"?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 20:24
Slom, просто число

Добавлено через 33 секунды
Если хотите, то можно и с описанием, не проблема выдернуть число из строки
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 20:33  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
Если хотите, то можно и с описанием, не проблема выдернуть число из строки
как можно сделать описание? я просто не совсем вижу, где число реализовано будет ,которое в файле конфига

for /f "tokens=* delims=" %%a in (%dp0config.txt) do (
set /A period=%%a*60оно?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 20:35
Slom, это Вам циклы нужно изучить, тогда всё станет проще. Вы напишите какой вариант конфига хотите видеть, а дальше я уже напишу к нему цикл, который распарсит строку и возьмёт число
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 20:41  [ТС]
Karen87, "периодичность проверки работы службы(в минутах)=*" примерно что то такое. А где можно найти материал насчет циклов?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 20:42
Цитата Сообщение от Slom Посмотреть сообщение
А где можно найти материал насчет циклов?
Циклические операции и примеры (команда FOR) * [Статья]
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 20:43  [ТС]
Karen87,
Цитата Сообщение от Karen87 Посмотреть сообщение
Я сам с батников начинал. Вы довольно быстро придёте к осознанию, что их возможности достаточно скудны
можете привести сравнение ,чтоб осознать какие есть пределы у батника.(насчет PowerShell я так понимаю ,там по сути уже программу полноценную можно писать?)
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 20:51
Цитата Сообщение от Slom Посмотреть сообщение
"периодичность проверки работы службы(в минутах)=*"
5 строчку в коде меняете на:
Windows Batch file
1
for /f "tokens=2 delims==" %%a in (%dp0config.txt) do (
Добавлено через 1 минуту
Цитата Сообщение от Slom Посмотреть сообщение
можете привести сравнение ,чтоб осознать какие есть пределы у батника.
Например, отсутствие массивов, отсутствие поддержки дробных чисел. Про работу с датой, временем и прочим я уже вообще молчу
Цитата Сообщение от Slom Посмотреть сообщение
(насчет PowerShell я так понимаю ,там по сути уже программу полноценную можно писать?)
Вполне

Добавлено через 6 минут
Цитата Сообщение от Karen87 Посмотреть сообщение
можете привести сравнение ,чтоб осознать какие есть пределы у батника.
Банально взять Ваш пример. Чтобы узнать статус службы через cmd нужно заморачиваться с распарсиванием вывода, в powershell, чтобы узнать статус службы достаточно короткой команды
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 21:02  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
5 строчку в коде меняете на:
Windows Batch fileВыделить код
1
for /f "tokens=2 delims==" %%a in (%dp0config.txt) do (
какая то ошибка происходит в ходе тестов . Остановить службу не удается и не вижу процесс запущенный.


В конфиг.файле можно прям так ставить "периодичность проверки работы службы(в минутах)=5" ?

Добавлено через 1 минуту
Karen87,

гигантское спасибо еще раз, что делитесь знаниями.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 21:10
Да не за что. По ошибке странно... Ладно:
1) Меняете первую строчку на @echo off
2) После 7 строчки добавляете:
Windows Batch file
1
2
echo %period%
pause
3) Запускаете и смотрите покажет ли в выводе "5" или нет
Заодно целиком код Ваш покажите, может ошиблись где-то

Добавлено через 2 минуты
Да, в конфиге так и пишите
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 21:14  [ТС]
Karen87,
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
chcp 1251
title ROUTER
setlocal enableextensions enabledelayedexpansion
for /f "tokens=2 delims==" %%a in (%dp0config.txt) do (
    set /A period=%%a*60
)
echo %period%
pause
:process
Set "ServiceName=ROUTER"
for /f "tokens=* delims=" %%a in ('powershell -executionpolicy bypass -command "(Get-Service %ServiceName%).Status"') do (
    if /i "%%a"=="Stopped" (
        echo !date!; !time:~,-3! служба остановлена>>log.txt
        net start %ServiceName% && echo !date!; !time:~,-3! служба запущена>>log.txt || echo !date!; !time:~,-3! Внимание! Служба не запущена>>log.txt
    )
)
ping localhost -n %period%>nul
goto process
Добавлено через 1 минуту
Karen87,
Цитата Сообщение от Slom Посмотреть сообщение
for /f "tokens=2 delims==" %%a in (%dp0config.txt) do (
    set /A period=%%a*60
видимо какая то ошибка в %dp0config.txt?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 21:15
Вроде правильно. Так что с выводом?

Добавлено через 56 секунд
Сделайте прям скриншот окна с ошибкой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2021, 21:15

Прошу подсказать с подборкой комплектующих для ПК
Я подобрал комплектующие пк, посоветовался с друзьями, почитал и т.д (я в пк составляющем мало щарю) Сумма получилась большая, мать...

Не могу разобраться с настройкой IIS для запуска приложений ISAPI
IIS стоит 7.5, расширения и фильтры подключил но не знаю как корректно настроить Есть файлик web.dll который должен банально выдать...

Прошу подсказать в подборе комплектующих для апгрейда!
Здравствуйте уважаемые форумчане! Если вас не затруднит помогите новичку в подборе комплектующих для апгрейда пк. Бюджет 25-27 тысяч...

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

Прошу подсказать реализацию бинарного поиска для задачи
Пробовал решить эту задачу без применения бинарного поиска (абсолютно не понимаю, куда его запихать), однако помешал тайм лимит (лимит 1...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru