registeruser1
05-05-2010, 23:57
...Люди добрые помогите!
Знаю что есть тут гуру по командам для батников...
Делаю батник для управления сервисами и есть проблемы...
@echo off
echo.
echo *******************************************************************************
@echo.
echo PLEASE WAIT... SCANING SERVICES:
@echo.
echo *******************************************************************************
echo.
setlocal enabledelayedexpansion
set server=\\server_name
ping -n 1 %server:~2% 1>nul 2>nul || ( echo NO RESPOND FROM SERVER, EXITING... & pause & exit )
title Scanning
set "sernum=100"
for /f "tokens=1*" %%a in ('sc %server% query state^= all') do (
if /i .%%a equ .SERVICE_NAME: set "_servicen_=%%b" && title Scanning %server%: %%b
if /i .%%a equ .DISPLAY_NAME: echo %%b | find /i "Windows" 1>nul && (
echo %%b
set /a sernum += 1
set "_service_!sernum:~1!=!_servicen_!"
set "_serviced_!sernum:~1!=%%b"
)
)
:display
TITLE WELCOME
cls
if errorlevel 0 @echo
echo.
echo *******************************************************************************
@echo.
echo STARTING/STOPPED SERVICES MENU:
@echo.
echo *******************************************************************************
echo.
for /f "tokens=2,3* delims=_=" %%a in ('set _service_') do (
for /f "tokens=4" %%s in ('sc %server% query %%b ^| findstr /r /b /c:" *STATE " ') do (
set "_displ_=!_serviced_%%a! "
echo.%%a !_displ_:~0,58! %%s
)
)
echo.
TITLE WELCOME
set "reply=0"
set /p reply="Please select number for start/stop and press Enter (0=RESCAN): "
set "reply=00%reply: =%"
set "reply=%reply:~-2%"
if %reply% == 00 goto :display
if not defined _service_%reply% echo Service %reply% not defined & pause & exit
sc %server% query !_service_%reply%! | findstr /r /b /c:" *STATE " | 1>nul find "RUNNING" && 1>nul sc %server% stop !_service_%reply%! || 1>nul sc %server% start !_service_%reply%!
goto :display
Этот код сканирует сервисы по фильтру (для примера я взял сервисы с названием Windows, их там 7 в инглиш версии) на удаленном компе (set server=\\server_name, можно и локальный подставить) выдает весь найденный список и предлагает выбрать номер сервиса который нужно - если он остановлен, то запустить - если запущен, то остановить. По сути все работает, если без специфик.
Но, запускает он сервис только в том случае если "STATUS_TYPE" (тип запуска) НЕ "DISALED", а у меня на всех мне нужных сервисах именно "DISALED" !!!
Задача не из легких конечно, потому на гуру командной строи и надеюсь...
Как видите все построенно на переменных. Никакого ручного прописывания названий сервисов НЕТ! В этом весь смысл... Нужно именно этого и придерживаться.
СУТЬ ЗАДАЧИ -
ЗАПУСК СЕРВИСА
Значит нужно что бы после сканирования всех сервисов и выдачи результатов поиска по установленному фильтру (в данном случае это отфильтрованные сервисы "Windows"), вводя номер сервиса сначала тип запуска сервиса из состояния "DISABLED" переводился в состояние "AUTO_START", потом запускался...
ОСТАНОВКА СЕРВИСА
Вводя номер сервиса сначала тип запуска сервиса из состояния "AUTO_START" переводился в состояние "DISABLED", потом останавливался...
ВСЯ ПРОБЛЕМА ИМЕННО В ПЕРЕМЕННЫХ.
Очень надеюсь на вашу помощь, профи!...
Знаю что есть тут гуру по командам для батников...
Делаю батник для управления сервисами и есть проблемы...
@echo off
echo.
echo *******************************************************************************
@echo.
echo PLEASE WAIT... SCANING SERVICES:
@echo.
echo *******************************************************************************
echo.
setlocal enabledelayedexpansion
set server=\\server_name
ping -n 1 %server:~2% 1>nul 2>nul || ( echo NO RESPOND FROM SERVER, EXITING... & pause & exit )
title Scanning
set "sernum=100"
for /f "tokens=1*" %%a in ('sc %server% query state^= all') do (
if /i .%%a equ .SERVICE_NAME: set "_servicen_=%%b" && title Scanning %server%: %%b
if /i .%%a equ .DISPLAY_NAME: echo %%b | find /i "Windows" 1>nul && (
echo %%b
set /a sernum += 1
set "_service_!sernum:~1!=!_servicen_!"
set "_serviced_!sernum:~1!=%%b"
)
)
:display
TITLE WELCOME
cls
if errorlevel 0 @echo
echo.
echo *******************************************************************************
@echo.
echo STARTING/STOPPED SERVICES MENU:
@echo.
echo *******************************************************************************
echo.
for /f "tokens=2,3* delims=_=" %%a in ('set _service_') do (
for /f "tokens=4" %%s in ('sc %server% query %%b ^| findstr /r /b /c:" *STATE " ') do (
set "_displ_=!_serviced_%%a! "
echo.%%a !_displ_:~0,58! %%s
)
)
echo.
TITLE WELCOME
set "reply=0"
set /p reply="Please select number for start/stop and press Enter (0=RESCAN): "
set "reply=00%reply: =%"
set "reply=%reply:~-2%"
if %reply% == 00 goto :display
if not defined _service_%reply% echo Service %reply% not defined & pause & exit
sc %server% query !_service_%reply%! | findstr /r /b /c:" *STATE " | 1>nul find "RUNNING" && 1>nul sc %server% stop !_service_%reply%! || 1>nul sc %server% start !_service_%reply%!
goto :display
Этот код сканирует сервисы по фильтру (для примера я взял сервисы с названием Windows, их там 7 в инглиш версии) на удаленном компе (set server=\\server_name, можно и локальный подставить) выдает весь найденный список и предлагает выбрать номер сервиса который нужно - если он остановлен, то запустить - если запущен, то остановить. По сути все работает, если без специфик.
Но, запускает он сервис только в том случае если "STATUS_TYPE" (тип запуска) НЕ "DISALED", а у меня на всех мне нужных сервисах именно "DISALED" !!!
Задача не из легких конечно, потому на гуру командной строи и надеюсь...
Как видите все построенно на переменных. Никакого ручного прописывания названий сервисов НЕТ! В этом весь смысл... Нужно именно этого и придерживаться.
СУТЬ ЗАДАЧИ -
ЗАПУСК СЕРВИСА
Значит нужно что бы после сканирования всех сервисов и выдачи результатов поиска по установленному фильтру (в данном случае это отфильтрованные сервисы "Windows"), вводя номер сервиса сначала тип запуска сервиса из состояния "DISABLED" переводился в состояние "AUTO_START", потом запускался...
ОСТАНОВКА СЕРВИСА
Вводя номер сервиса сначала тип запуска сервиса из состояния "AUTO_START" переводился в состояние "DISABLED", потом останавливался...
ВСЯ ПРОБЛЕМА ИМЕННО В ПЕРЕМЕННЫХ.
Очень надеюсь на вашу помощь, профи!...