Пакетная программа для остановки запущенных служб - PullRequest
0 голосов
/ 16 февраля 2012

Скажем, у меня есть список всех услуг, начиная с имени "MyServiceFactory -".Не все из них будут запущены, только несколько, и это зависит от использования сервиса.Я ищу помощь в написании пакетной программы, которая останавливает только те службы, которые работают, и запускает эти службы (не все службы и не перезапускаются).Любая помощь приветствуется

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Вы также можете попробовать использовать PowerShell.У меня есть несколько строк, которые я использую для запуска и остановки наших сервисов:

# Start all services with FOO in their name:
powershell -Command start-service *FOO*

# Stop all running FOO services:
powershell -Command stop-service *FOO*

Недостатком является то, что команда PowerShell не дает вам статуса того, что происходит с сервисом, как net start, но выдолжен любить краткость :) 1005 *

1 голос
/ 16 февраля 2012

Это должно сработать (или, по крайней мере, дать вам начало):

@echo off 
setlocal
if "%~1"=="" goto usage
set tmpFile=templist.txt
set tmpAnsi=templist_ansi.txt
wmic /locale:MS_409 service where "caption like '%~1' and state='Running'"  get caption /format:csv >%tmpFile%
REM this is required to convert from Unicode(UCS-2) to ANSI
type %tmpFile%>%tmpAnsi%

Echo ---------------Stopping services----------------------
Echo.
for /f "tokens=2 skip=2 delims=," %%i  in (%tmpAnsi%) do (
   wmic /locale:MS_409 service where caption="%%i" call stopservice
)

Echo --------------Starting services-----------------------
Echo.
for /f "tokens=2 skip=2 delims=," %%i  in (%tmpAnsi%) do ( 

   wmic /locale:MS_409 service where caption="%%i" call startservice
)

goto end

:usage
Echo.
Echo Usage is: 
Echo %~n0 pattern_to_check
Echo.
Echo Pattern: 
Echo [ ]  Any one character within the specified range ([a=f]) or set ([abcdef]).
Echo ^^    Any one character not within the range ([^a=f]) or set ([^abcdef].)
Echo %%    Any string of 0 (zero) or more characters
Echo _    (underscore) Any one character. Any literal underscore    
Echo         used in the query string must be escaped by placing it inside []
Echo.
Echo     If pattern contains spaces, it must be enclosed in double quotes 

:end

Если вы назовете свой пакетный файл batch.bat, вы бы назвали его batch.bat "MyServiceFactory -%".

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