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

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

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

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


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

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


...Люди добрые помогите!
Знаю что есть тут гуру по командам для батников...

Делаю батник для управления сервисами и есть проблемы...

Код: Выделить весь код
@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", потом останавливался...


ВСЯ ПРОБЛЕМА ИМЕННО В ПЕРЕМЕННЫХ.

Очень надеюсь на вашу помощь, профи!...

Отправлено: 23:57, 05-05-2010

 

Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата registeruser1:
ЗАПУСК СЕРВИСА »
Код: Выделить весь код
sc config MyService start= auto 1>nul 2>&1
sc start MyService 1>nul 2>&1 или net start MyService /yes 1>nul 2>&1
Цитата registeruser1:
ОСТАНОВКА СЕРВИСА »
Код: Выделить весь код
sc stop MyService 1>nul 2>&1 или net stop MyService /yes 1>nul 2>&1
sc config MyService start= disabled 1>nul 2>&1
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:16, 06-05-2010 | #2



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

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


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


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

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


El Sanchez Спасибо, это работает...

Но в моем случае MyService не нужно что бы в ручную был прописан...
В том то и дело что цель именно что бы он по переменным ( ТИПА - sc %server% query !_service_%reply%! ) смотрел какой сервис остановился или запустился в том сервисе и ставить тип запуска "AUTO_START" или "DISABLED". Просто я всех команд не знаю и с переменными не работал ни когда...
Я же код выложил, скопируй его, сделай расширение BAT, потом выставь службе "Windows Installer" тип запуска "DISABLED" и этим батником запусти ее. Я думаю что все будет ясно дальше... Она не запустится - потому что тип запуска именно "DISABLED".

Хорошо, поставлю не много по иному вопрос для ясности -

КАК НЕ ПРОПИСЫВАЯ В РУЧНУЮ ИМЕНА СЕРВИСОВ ПОМЕНЯТЬ ТИП ЗАПУСКА С "DISABLED" НА "AUTO_START" ПЕРЕД ЗАПУСКОМ В ЗАПУСКАЕМОЙ, И С "AUTO_START" НА "DISABLED" ПЕРЕД ОСТАНОВКОЙ В ОСТАНАВЛИВАЕМОЙ В ДАННЫЙ МОМЕНТ СЛУЖБЕ В МОЕМ КОДЕ...???

Последний раз редактировалось registeruser1, 06-05-2010 в 17:09.


Отправлено: 13:58, 06-05-2010 | #3


Аватара для El Sanchez

Ветеран


Contributor


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

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


registeruser1,
Я думал вы самостоятельно замените строки...

Короче, предпоследнюю строку заменить на
Код: Выделить весь код
sc %server% query !_service_%reply%! | findstr /r /b /c:" *STATE " | 1>nul find "RUNNING" && (1>nul sc %server% stop !_service_%reply%! & sc %server% config !_service_%reply%! start= disabled 1>nul 2>&1)||(sc %server% config !_service_%reply%! start= auto 1>nul 2>&1 & 1>nul sc %server% start !_service_%reply%!)
P.S. Не следует забывать, что многие службы зависят от других служб.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:30, 06-05-2010 | #4


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


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

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


El Sanchez
...Спасибо огромное! Я уж думал что не получится. Еще раз благодарю!

Может за одно подскажете, как можно надписи в одной сторке батника раскрасить несколькими цветами?

Отправлено: 19:41, 06-05-2010 | #5


Аватара для El Sanchez

Ветеран


Contributor


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

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



Цитата registeruser1:
Может за одно подскажете, как можно надписи в одной сторке батника раскрасить несколькими цветами? »
На форуме - с помощью тега color
Текст скрипта - в текстовом редакторе типа Word
Вывод в консоль - никак. Только все вместе одним цветом (см. команду color /?). P.S. Такое возможно в PowerShell.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:08, 06-05-2010 | #6


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


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

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


Цитата El Sanchez:
На форуме - с помощью тега color
Текст скрипта - в текстовом редакторе типа Word
Вывод в консоль - никак. Только все вместе одним цветом (см. команду color /?). P.S. Такое возможно в PowerShell. »
Спасибо, понятно.

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

Код: Выделить весь код
net use z: \\comp_name\share_folder /PERSISTENT:YES
Что куда дописать нужно?

Отправлено: 21:26, 06-05-2010 | #7


Ветеран


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

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


Цитата El Sanchez:
Цитата registeruser1:
Может за одно подскажете, как можно надписи в одной сторке батника раскрасить несколькими цветами? »
Вывод в консоль - никак. Только все вместе одним цветом (см. команду color /?). P.S. Такое возможно в PowerShell. »
В принципе, при большом желании и использовании сторонних утилит (вместо встроенной «echo»), например, той же «echox.exe» из комплекта Shell Scripting Toolkit
можно.
Код: Выделить весь код
@echo off
cls
echo **********
echox.exe -n -c 09 "Я "
echox.exe -n -c 0A "умею "
echox.exe -n -c 0B "рисовать "
echox.exe -n -c 0C "самыми "
echox.exe -n -c 0D "разными "
echox.exe    -c 0E "цветами"
echo **********
Код: Выделить весь код
**********
Я умею рисовать самыми разными цветами
**********
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:55, 07-05-2010 | #8


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


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

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


Цитата Iska:
Только все вместе одним цветом (см. команду color /?). »
Спасибо за ответ, понятно.

Отправлено: 06:45, 07-05-2010 | #9


Googler


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

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


Цитата Iska:
при большом желании и использовании сторонних утилит »
при большом желании можно и без сторонних утилит
читать дальше »
Код: Выделить весь код
@Echo Off

Find "ansi.sys" "%SystemRoot%\system32\config.nt" >Nul||^
Echo device=%%systemroot%%\system32\ansi.sys>>"%SystemRoot%\system32\config.nt"&&^
Start "" "%~0" %*&& Exit /B 1

Echo **********
command.com /C ECHO  Я
command.com /C ECHO  умею
command.com /C ECHO  рисовать
command.com /C ECHO  самыми
command.com /C ECHO  разными
command.com /C ECHO  цветами
Echo **********

Pause >Nul

статья: Using ANSI sequences to enhance batch files
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:24, 07-05-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Батник для подключения к админским шарам. Creativie Скриптовые языки администрирования Windows 13 05-05-2014 12:54
батник для NTOS admart Лечение систем от вредоносных программ 2 17-10-2008 23:36
Проблема с сервисами CTEPBA Microsoft Windows NT/2000/2003 1 19-01-2006 08:51
батник для выключения win98 mikesip Microsoft Windows 95/98/Me (архив) 4 21-12-2004 19:01
Батник для запуска отчета в 1С Zlohobbit Программирование и базы данных 2 26-02-2004 11:44




 
Переход