Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Останавливаем службу с проверкой (http://forum.oszone.net/showthread.php?t=354216)

rosalin 15-09-2023 10:03 3015918

Останавливаем службу с проверкой
 
Добрый день!
помогите пожалуйста написать батник для планировщика, который проверяет статус службы 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 Служба останавливается не сразу нужен какой то таймаут

NickM 15-09-2023 10:47 3015922

Цитата:

Цитата 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


rosalin 15-09-2023 11:08 3015926

Код:

@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%

Результат такой , если служба остановлена, то все срабатывает как надо, а если запущена , то происходит остановка и все , нужно чтобы если служба запущена , то останавливает ее , после остановки , импортируем в реестр

NickM 15-09-2023 11:34 3015929

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

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

rosalin 15-09-2023 11:45 3015934

Цитата:

Цитата 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%


NickM 15-09-2023 15:20 3015962

Цитата:

Цитата 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

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


Опиум 12-10-2023 12:35 3018019

Цитата:

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

а разве net stop servicename не возвращает управление, когда сервис остановился? зачем доп таймаут?


Время: 23:57.

Время: 23:57.
© OSzone.net 2001-