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

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

Ответить
Настройки темы
CMD/BAT - Останавливаем службу с проверкой

Пользователь


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

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


Изменения
Автор: rosalin
Дата: 15-09-2023
Добрый день!
помогите пожалуйста написать батник для планировщика, который проверяет статус службы ServiceName, если запущена , то останавливает ее , после остановки , импортируем в реестр

Код: Выделить весь код
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{927CDB68-F2B8-2D7C-2C00-03E1578A93F6}]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{927CDB68-F2B8-2D7C-2C00-03E1578A93F6}\MiscStatus]
"Data"=hex:80,49,10,6a,47,1c,33,ce,69,32,91,95,96,be,28,a5,31,4f,59,3f,cd,52,\
  2c,cf,37,7f,41,64,e5,8f,1b
запускаем службу ServiceName

PS Служба останавливается не сразу нужен какой то таймаут

Отправлено: 10:03, 15-09-2023

 

Аватара для NickM

Ветеран


Contributor


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

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


Цитата rosalin:
который проверяет статус службы ServiceName, если запущена , то останавливает ее , после остановки , импортируем в реестр »
Типа такого:
Код: Выделить весь код
@echo off
sc query ServiceName | find "STOPPED" > nul
if %ERRORLEVEL% NEQ 0 (
   echo.STARTED
   sc stop ServiceName   
) else (
   echo.STOPPED
)
ping -n 15 localhost > Nul
reg import regfile.reg 
sc start ServiceName

Отправлено: 10:47, 15-09-2023 | #2



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

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


Пользователь


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

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


Код: Выделить весь код
@echo on
Set ServiceName=Undelete
sc query %ServiceName% | find "STOPPED" > nul
if %ERRORLEVEL% NEQ 0 (
   echo.STARTED
   sc stop %ServiceName%   
) else (
   echo.STOPPED
)
ping -n 15 localhost > Nul
reg import CLSID53NEW927HKLM.reg 
sc start %ServiceName%
Результат такой , если служба остановлена, то все срабатывает как надо, а если запущена , то происходит остановка и все , нужно чтобы если служба запущена , то останавливает ее , после остановки , импортируем в реестр

Отправлено: 11:08, 15-09-2023 | #3


Аватара для NickM

Ветеран


Contributor


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

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


У Вас прав на остановку службы хватает?

Попробуйте отладить сценарий ручным запуском.

Отправлено: 11:34, 15-09-2023 | #4


Пользователь


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

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


Цитата NickM:
У Вас прав на остановку службы хватает?
Попробуйте отладить сценарий ручным запуском. »
Пробую , но пока не понимаю причину,
запускаю от имени администратора,

если служба запущена , то просто останавливаеться,
до этого блока не доходит
ping -n 15 localhost > Nul
reg import CLSID53NEW927HKLM.reg
sc start %ServiceName%

если служба не запущена то идет все по сценарию

Вот так вроде работает , но не уверен в чистоте кода

Код: Выделить весь код
@echo on
Set ServiceName=Undelete
sc query %ServiceName% | find "STOPPED" > nul
if %ERRORLEVEL% NEQ 0 (
   echo.STARTED
   sc stop %ServiceName%
   ping -n 15 localhost > Nul
   reg import CLSID53NEW927HKLM.reg 
   rem sc start %ServiceName%   
) else (
   echo.STOPPED
)
ping -n 15 localhost > Nul
reg import CLSID53NEW927HKLM.reg 
sc start %ServiceName%

Отправлено: 11:45, 15-09-2023 | #5


Аватара для NickM

Ветеран


Contributor


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

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


Цитата NickM:
Попробуйте отладить сценарий ручным запуском. »
Как-то так:
Код: Выделить весь код
@echo off
set "chksvc=Undelete"
echo.1. Проверка статуса службы "%chksvc%"
sc query %chksvc% | find "STOPPED" > nul
if %ERRORLEVEL% NEQ 0 (
   echo."%chksvc%" работает, остановим её
   sc stop %chksvc% > nul
) else (
   echo."%chksvc%" остановлена
)
echo.
echo.2. Задержка с помощью пинг
ping -n 5 localhost > Nul
echo.
echo.3. Статус службы "%chksvc%"
sc query %chksvc% | find "STOPPED"
echo.
echo.4. Импорт reg-файла 
echo.
echo.5. Запуск и статус службы "%chksvc%"
sc start %chksvc% > nul
ping -n 5 localhost > Nul
sc query %chksvc% | find "RUNNING"

pause
Скрытый текст

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

Отправлено: 15:20, 15-09-2023 | #6


Ветеран


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

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


Цитата rosalin:
Служба останавливается не сразу нужен какой то таймаут »
а разве net stop servicename не возвращает управление, когда сервис остановился? зачем доп таймаут?

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 12:35, 12-10-2023 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - Проблема с проверкой диска. akkerman1 Microsoft Windows 7 0 09-04-2021 00:39
CMD/BAT - Скрипт с проверкой условий wiznv Скриптовые языки администрирования Windows 6 30-07-2014 07:26
CMD/BAT - [решено] Копирование с проверкой safonov_ivan Скриптовые языки администрирования Windows 4 19-07-2013 11:44
EventID - Проблема с проверкой RAM doananh Материнские платы и память 10 04-03-2009 17:47
Медиа - Проблема с проверкой микрофона shuptia Microsoft Windows 2000/XP 9 11-05-2008 12:14




 
Переход