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

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

10.03.2021, 12:04. Показов 7798. Ответов 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, 21:16  [ТС]
Студворк — интернет-сервис помощи студентам
Karen87,

может там так поставить %~dp0 ?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 21:17
Точно, заработался... Вы молодец
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 21:18  [ТС]
вот
Миниатюры
Прошу подсказать с настройкой батника для проверки и запуска службы  
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 21:19
Ну да, в этом ошибка. Меняйте %dp0 на %~dp0
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 21:32  [ТС]
Karen87,

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


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 start and check ROUTER
setlocal enableextensions enabledelayedexpansion
for /f "tokens=2 delims==" %%a in (%~dp0config.txt) do (
    set /A period=%%a*60
)
: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
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 21:37
Для проверки статуса службы выполните команду:
Windows Batch file
1
powershell -executionpolicy bypass -command "(get-service имя_службы).status"
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 21:48  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
Windows Batch fileВыделить код
1
powershell -executionpolicy bypass -command "(get-service имя_службы).status"
куда ее нужно поставить?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 21:51
Чистую консоль открываете и вставляете перед тем как планируется запуск скрипта основного
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
10.03.2021, 21:56  [ТС]
Karen87,
stopped служба
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.03.2021, 22:05
Ну значит скрипт должен отрабатывать и писать всё в лог. Что по факту?
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
11.03.2021, 09:21  [ТС]
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 TEST 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=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ый скрин - вроде все нормально идет
2ой- он запускается, при этом логов не создается.
3ий скрин - получается когда я пытаюсь остановить службу, в процессах высвечивается Net Command
Миниатюры
Прошу подсказать с настройкой батника для проверки и запуска службы   Прошу подсказать с настройкой батника для проверки и запуска службы   Прошу подсказать с настройкой батника для проверки и запуска службы  

0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
11.03.2021, 09:27
Slom, здравствуйте! Первый же вопрос:
Где лежит config.txt (укажите полный путь вместо %~dp0)?
В идеале мне бы удалённо подключиться. В переписке проблему можно решать долго
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
11.03.2021, 09:53  [ТС]
Karen87,

Спасибо,после указания пути проблема решилась, единственное лог не пишется. Все остальное заработало и без ошибок.
Служба в стоп уходит корректно.

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=2 delims==" %%a in (C:\tools\CHECKSTART2\config.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
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
11.03.2021, 10:04
Цитата Сообщение от Slom Посмотреть сообщение
Служба в стоп уходит корректно
Она должна корректно из стопа запускаться. Запускаете с ярлыка, который в автозагрузке?
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
11.03.2021, 11:24  [ТС]
Karen87,

после того как я запустил под ярлыком все заработало.Логи пишутся и вообще все хорошо!Благодарю за помочь!)
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
11.03.2021, 11:46
Slom, да не за что
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
11.03.2021, 16:22  [ТС]
Karen87,

интересно,
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 check and start iQ-ROUTER
setlocal enableextensions enabledelayedexpansion
for /f "tokens=2 delims==" %%a in (C:\tools\CHECKSTART2\config.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
пользуюсь данным скриптом, тестирую параллельно его и получается что скрипт работает, но по логам видно что он не работает по таймингу. И еще момент, когда я принудительно останавливаю службу то служба ругается на то,что ее нельзя остановить ,но при этом на секунду останавливается и сразу запускается(тоже видно по логам).

11.03.2021; 20:09:00 служба запущена
11.03.2021; 20:09:50 служба остановлена
11.03.2021; 20:09:50 Внимание Служба не запущена
11.03.2021; 20:09:52 служба запущена
11.03.2021; 20:15:14 служба остановлена
11.03.2021; 20:15:16 служба запущена
11.03.2021; 20:15:30 служба остановлена
11.03.2021; 20:15:33 служба запущена

Вопрос: Попытался поставить последние строчки
Windows Batch file
1
2
3
set /A waiting=!period!*60
ping localhost -n %waiting%>nul
goto process
но особого успеха с этим не добился.

ощущение будто сейчас у батника задача стоит -мгновенно запускать сллужбу без опроса.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
11.03.2021, 16:31
Так Вы в свойства службы гляньте, у Вас стоит автозапуск, наверное
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
11.03.2021, 16:35
Что у службы во вкладке, которая на скриншоте?
Миниатюры
Прошу подсказать с настройкой батника для проверки и запуска службы  
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 32
11.03.2021, 16:57  [ТС]
Karen87,

да, Вы правы) В моем случае получается нужно переключить "не выполнять никаких действий"? при первом сбое,или на последующие так же выставить?
Миниатюры
Прошу подсказать с настройкой батника для проверки и запуска службы  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2021, 16:57

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru