Как узнать, установлена ​​ли служба Windows с использованием (предпочтительно) только пакета? - PullRequest
18 голосов
/ 07 октября 2010

Мне нужно проверить, установлена ​​ли служба Windows из командного файла.Я могу окунуться в нечто иное, чем партия, если мне нужно, но я бы предпочел не делать этого.Есть ли способ сделать это?

Ответы [ 5 ]

53 голосов
/ 07 октября 2010

Попробуйте это:

@echo off
SC QUERY ftpsvc > NUL
IF ERRORLEVEL 1060 GOTO MISSING
ECHO EXISTS
GOTO END

:MISSING
ECHO SERVICE MISSING

:END

Обратите внимание, что команда SC QUERY запрашивает краткое имя службы, а не отображаемое имя. Вы можете найти это имя, просмотрев вкладку «Общие» свойств службы в Service Manager.

10 голосов
/ 26 июня 2014

Вы должны использовать команду «запрос», а не «Стоп» или что-то еще, «Стоп» может остановить ваш сервис, если он существует, тогда это неправильный путь.

@echo OFF

set _ServiceName=SomeServiceName

sc query %_ServiceName% | find "does not exist" >nul
if %ERRORLEVEL% EQU 0 echo Service Does Not Exist.
if %ERRORLEVEL% EQU 1 echo Service Exist.
3 голосов
/ 27 января 2013

а как же:

sc interrogate "nameofyourservicehere"

Я нашел это действительно полезным, поскольку tasklist не будет предоставлять информацию о том, установлена ​​служба или нет. (или я не нашел как)

0 голосов
/ 14 октября 2010

Вот пример использования sc query для проверки, установлена ​​ли служба Windows, и остановка, если найдена.

sc query | find /I "%tmpServiceName%" > nul
if not errorlevel 1 echo. && net stop %tmpServiceName%
if errorlevel 1 echo.   - Windows service %tmpServiceName% is not running or doesn't exist.
0 голосов
/ 07 октября 2010

вы можете запустить «net stop [servicename]», если произойдет сбой с «имя службы недействительно», служба не установлена ​​

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