2016-05-05 6 views
1

Ich verwende eine Batch-Datei, die etwa 10 Befehle verarbeitet. Auf einer bestimmten Ebene möchte ich nur fortfahren, wenn mein spezieller Window-Service in einem "running" -Zustand ist. Wie erfahre ich den Status eines Dienstes mit dem Befehl cmd? Und wie speichere ich das Ergebnis eines Befehls in einer Variablen in einer Batch-Datei oder führe einen Befehl in einer Batch-Datei aus, abhängig vom Ergebnis eines anderen Befehls?Wie Sie den Status eines Fensterdienstes mithilfe der Eingabeaufforderung kennen

+1

Zur Kontrolle Dienste gibt es die ' sc' Befehl (und seine Unterbefehle 'query' /' queryex') - geben Sie 'sc /?' an der Eingabeaufforderung ein, um mehr zu erfahren; Um das Ergebnis eines Befehls in eine Variable zu bekommen, benutzen Sie 'for/F' - geben Sie' for /? 'ein. – aschipfl

Antwort

0
@echo off 
sc query Dhcp | findstr /i "STATE" 
pause 

Sie können den folgenden Befehl verwenden, um festzustellen, ob ein Dienst läuft oder nicht:

sc query ServiceName | findstr /i "STATE" 

Wenn ich es für DHCP-Dienst laufen, erhalte ich:

STATE      : 4 RUNNING 

Wenn es gestoppt wurde, würde ich erhalten:

STATE      : 1 STOPPED 

Hinweis: Der Servicename sollte der Dienstname, sein nicht die Anzeigenamen.

EDIT auf 2016.05.05 @ 16: 20

Dieses Beispiel für den Zustand einiger Dienste mit FOR Befehl Überprüfung:

@echo off 
Title Checking the state of some Services 
set ServiceName=MozillaMaintenance MDM AdobeFlashPlayerUpdateSvc Winmgmt wuauserv^
^ ALG AIPS Themes gupdate gupdatem msiserver AppInfo AppMgmt PlugPlay Power bthserv^
^ NetLogon SamSs ProtectedStorage W32Time pla MpsSvc UxSms TabletInputService 

For %%a in (%ServiceName%) do (
    echo Service %%a & sc query %%a | findstr /i "STATE" 
) 
pause 
+0

danke für die Antwort, aber ich muss den Dienststatus in einer anderen Variablen für die weitere Verwendung wiederherstellen. – Ajay

Verwandte Themen