Мне нужно проверить, установлена ли служба 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.