Как узнать, установлена ​​ли служба Windows с использованием (желательно) только партии?

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

Ответ 1

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

Ответ 2

Попробуйте следующее:

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

:MISSING
ECHO SERVICE MISSING

:END

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

Ответ 3

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

@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.

Ответ 4

как насчет:

    sc interrogate "nameofyourservicehere"

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

Ответ 5

Вот пример с помощью 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.