Jump to content

Batch Hilfe!


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich bin gerade dabei hier einiges zu automatisieren.

Dabei mache ich folgendes:

Ich prüfe, ob ein Windows-Dienst gestoppt wird und schreibe dann eine Event-Meldung in die MOM-Console.

Anschließend wird der Dienst wieder per sc-command gestartet.

 

Nun möchte ich aber in einem weiteren Schritt prüfen, ob der Dienst auch wirklich läuft. Dazu schreibe ich einen sc query [Dienstname] in eine Temp-Datei.

Nun muß ich in der Temp-Datei den Ausdruck "Running" finden und wenn der drin steht, dann möchte ich eine EXE-Datei ausführen (logevent.exe).

Irgendwie weiß ich aber nicht, wie ich diese Überprüfung nach "Running" machen soll, damit ich danach auch eine EXE ausführen kann.

 

Schön wärs dann noch, wenn das Batch-Programm nicht nur nach "Running" sucht, sondern auch nach "Start Pending" etc.

 

Wer kann mir da helfen?????

 

Tausend Dank

Link zu diesem Kommentar

For-Schleife hab ich schon ein bißchen rumprobiert, aber irgendwie funktioniert das nicht.

 

In meiner Temp-Datei steht folgendes drin:

 

SERVICE_NAME: wuauserv

TYPE : 20 WIN32_SHARE_PROCESS

STATE : 4 RUNNING

(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)

WIN32_EXIT_CODE : 0 (0x0)

SERVICE_EXIT_CODE : 0 (0x0)

CHECKPOINT : 0x0

WAIT_HINT : 0x0

 

 

Und ich will nun irgendwie mit ner for-Schleife das "Running" überprüfen und falls das drin steht eine logevent.exe starten.

 

Ich blicks aber nicht so ganz.

 

for /F "tokens=10" %a in (%tempdat% | find /I "Running") do call logevent.exe

 

Irgendwie stimmt das aber nicht so ganz....

DANKE

Link zu diesem Kommentar

als variante - hab deinen ausdruck in eine datei forswitch.txt kopiert ;)

@echo off
for /f "skip=2 tokens=4" %%i in (c:\forswitch.txt) do if not defined status set status=%%i
if not "%STATUS%"=="RUNNING" color cf & echo "DIENSTFEHLER!" & pause>nul

zur erläuterung: da du mit for nur zeilen überspringen, aber nicht nach n zeilen aufhören kannst, musst die varaible als if not defined ermittelt werden, denn sonst überschreibt ja ede zeile den erstgesetzten wert :)

die bessere variante wäre allerdings, nicht den string, sondern den statuswert (1 2 3 4) abzufangen - dies würde dir bessere möglichkeiten bieten, per %errorlevel% in verschiedene aktionen umzuleiten, die aus dem status folgen sollen (z.b. erneuter startversuch oder abbruch oder ...)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...