2010-10-07 12 views

Respuesta

-4

puede ejecutar "net stop [servicename]" si se produce un error con "el nombre del servicio no es válida" el servicio no está instalado

+8

¡Error! Incluso la suspensión breve de algunos servicios puede no ser deseada, lo que es más, algunos servicios están protegidos y no pueden ser detenidos. – ST3

+0

También estoy de acuerdo que esto no debería marcarse como la respuesta, aunque podría funcionar en algunos casos. – leeman24

46

Prueba esto:

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

:MISSING 
ECHO SERVICE MISSING 

:END 

Tenga en cuenta que el comando SC QUERY consultas por el nombre corto del servicio, no el nombre para mostrar. Puede encontrar este nombre mirando la pestaña General de las propiedades de un servicio en Service Manager.

0

Aquí hay un ejemplo usando sc query para verificar si un servicio de Windows está instalado y detener si se encuentra.

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

qué pasa:

sc interrogate "nameofyourservicehere" 

he encontrado esto realmente útil ya tasklist no dará información sobre si el servicio está instalado o no. (o no encontré cómo)

+2

Bueno, esto verifica si el Servicio se está ejecutando. Sin embargo 'sc GetDisplayName ServiceName' funcionaría para comprobar instalado – Robin

8

Debe usar el comando "query", no "Stop" o algo más, el "Stop" puede detener su servicio si es que existe, entonces esta no es la manera correcta.

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