2010-10-07 17 views

Répondre

-4

vous pouvez exécuter "net stop [servicename]" si elle échoue avec "le nom du service est invalide" le service est pas installé

+8

Mauvais! Même une courte suspension de certains services peut ne pas être souhaitée, de plus certains services sont protégés et ne peuvent pas être arrêtés. – ST3

+0

Je suis également d'accord que cela ne devrait pas être marqué comme la réponse, bien que cela puisse fonctionner dans certains cas. – leeman24

46

Essayez ceci:

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

:MISSING 
ECHO SERVICE MISSING 

:END 

Notez que la commande SC QUERY requêtes par le nom de service court pas le nom d'affichage. Vous pouvez trouver ce nom en consultant l'onglet Général des propriétés d'un service dans Service Manager.

0

Voici un exemple utilisant sc query pour vérifier si un service Windows est installé et s'arrêter s'il est trouvé.

 
    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'en est:

sc interrogate "nameofyourservicehere" 

J'ai trouvé ce vraiment utile car tasklist ne donnera pas d'informations que le service est installé ou non. (ou je n'ai pas trouvé comment)

+2

Eh bien, cela vérifie si le service est en cours d'exécution. Cependant 'sc GetDisplayName ServiceName' fonctionnerait pour vérifier installé – Robin

8

Vous devez utiliser "requête", pas "Stop" ou autre chose, le "Stop" peut arrêter votre service s'il existe, alors ce n'est pas la bonne façon.

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