kuehnlm 10 Geschrieben 20. Juli 2004 Melden Teilen Geschrieben 20. Juli 2004 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 Zitieren Link zu diesem Kommentar
real_tarantoga 11 Geschrieben 20. Juli 2004 Melden Teilen Geschrieben 20. Juli 2004 for-befehl mit token verwenden. musst alleridng aufpassen, dass du kein problem bekommst mit der meldung "running" oder "not running" Zitieren Link zu diesem Kommentar
kuehnlm 10 Geschrieben 20. Juli 2004 Autor Melden Teilen Geschrieben 20. Juli 2004 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 Zitieren Link zu diesem Kommentar
real_tarantoga 11 Geschrieben 20. Juli 2004 Melden Teilen Geschrieben 20. Juli 2004 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 ...) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.