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!

Recommended Posts

Posted

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

Posted

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

Posted

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...