Как проверить в Windows, не установлен ли сервис с помощью командного файла - PullRequest
2 голосов
/ 25 февраля 2012

Я пытаюсь создать пакетную программу, которая должна проверить, установлена ​​ли служба, прежде чем проверять, запущена ли она / остановлена.

Я просто хотел бы спросить, можно ли как-нибудь проверить ОШИБКУ неустановленного сервиса, если ОС Windows XP.

В моем фрагменте кода:

ver | find /I "XP"
if %errorlevel%==0 goto ver_xp
goto ver_nonXP

:ver_xp
echo Windows XP
sc query myService > nul
echo %errorlevel%
if errorlevel ___I goto ServiceOk
if errorlevel ___ goto ServiceError
goto ServiceError

:ver_nonXP
echo Windows is not XP
sc query myService > nul
echo error1_percent %errorlevel%
if %errorlevel%==0 goto ServiceOk
if %errorlevel% NEQ '0' goto ServiceError
goto end

:ServiceError
echo Service is not installed
net helpmsg %errorlevel%
goto end

:ServiceError
rem do some operations here....

Я пытался использовать

if errorlevel 1060 goto ServiceError

Похоже, что если служба не установлена, приведенное выше условие всегда будет ложным.

Я сделал уровень ошибки ____, потому что не знаю, должно ли быть правильное условие.

Ответы [ 2 ]

5 голосов
/ 25 февраля 2012

sc query myService |find "myService" >nul сделает свое дело

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

Согласно этому ответу это возможно в пакете, используя метод, который вы описали Как узнать, установлена ​​ли служба Windows с использованием (предпочтительно) только пакета?

В качестве альтернативы вы можете запроситьс PowerShell:

$serv_status = get-service "myService"
if($serv_status -ne $null) 
{ 
    // do some operations here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...