Batchprogrammierung

Hallo,
ich möchte gerne mögliche Fehler, die ein Batchprogramm ausspuckt, in eine Datei umleiten, ist das möglich?

Beispiel:

ping 192.168.1.0
ping 192.168.1.2

Falls jetzt bei einem der beiden Befehle ne Meldung à la „Zielhost nicht erreichbar“ auftritt, soll nur diese Fehlermeldung in eine txt-Datei geschrieben werden.

Bin für jeden Lösungsansatz dankbar!

Sabrina

Moin, Bino,

der Output eines Batches kann nur komplett umgeleitet werden: cmdname > cmd.txt. Aus dem Batch heraus, also abhängig von den Ergebnissen einzelner Befehle, geht das nur, wenn der Returncode des Befehls ausgewertet wird. Das hilft hier aber nicht weiter, weil der ping in jedem Fall eine Null als RC zurückliefern wird, unabhängig von der Meldung, die er erzeugt. Anders gesagt: EInen Wert ungleich Null liefert der ping nur, wenn er mit falschen Parametern aufgerufen wird.

Gruß Ralf

Hallo Sabrina,

ich möchte gerne mögliche Fehler, die ein Batchprogramm
ausspuckt, in eine Datei umleiten, ist das möglich?

Beispiel:

ping 192.168.1.0
ping 192.168.1.2

Falls jetzt bei einem der beiden Befehle ne Meldung à la
„Zielhost nicht erreichbar“ auftritt, soll nur diese
Fehlermeldung in eine txt-Datei geschrieben werden.

Bin für jeden Lösungsansatz dankbar!

  1. Die Ausgabe von PING in eine Datei umleiten.
  2. Diese Datei (z.B. mit FIND) nach der Fehlermeldung durchsuchen.

MfG Peter(TOO)

Nochmals Hallo,
ich hätte mich klarer ausdrücken müssen, das ping-Beispiel war auch nur ein Beispiel.
Insgesamt ist es etwas komplizierter.
Einfach gesagt möchte ich ein bestimmtes Programm mit Parametern ausführen.
Fehlermeldungen aus dem Programm heraus kann ich nicht abfangen, das ist mir vorhin klar geworden.

Meine bat-Datei sieht ungefähr so aus:

start programm1
start programm2
start programm3
usw

Jetzt möchte ich zwischen den einzelnen Programmen Steps einbauen,
dass ich eine txt-Datei bekomme mit dem Inhalt
Datum - Uhrzeit - Step 1 erledigt
Datum - Uhrzeit - Step 2 erledigt

angenommen Step3 läuft nicht durch oder wird manuell beendet wegen was auch immer
Datum - Uhrzeit - Step 3 fehlerhaft

Habt ihr Ideen?
Schonmal Danke.
Sabrina

Hallo Sabrina,

über welche Voraussetzungen reden wir denn hier??

WinXP/Win2K3? Oder Win NT/Win 2000? Unix/Linux?

Es ist (fast) egal, eigentlich kommt es auf die gestarteten Programme an. Wenn diese Ihre Fehlerausgabe korrekterweise auf dem Error-Stream ausgeben, dann kannst Du einfach diesen Stream in eine Datei umleiten und zwar mittels „2>err.txt“, damit landet nur die Ausgabe vom Error-Stream in der Datei „err.txt“.

Ob Fehler aufgetreten sind, sollten die Programme durch einen Rückgabewert mitteilen. Dieser wird i.A. in einer Umgebungsvariablen gespeichert.

  • Bei Windows XP/2003 (mit eingeschalteten Befehlserweiterungen): Umgebungsvariable %errorlevel% => Abfrage z.B. „if %errorlevel% EQU 0 …“

  • Windows vor XP/2003 (oder ausgeschalteten Befehlserweiterungen): Nur in if-Abfrage möglich => „if errorlevel 0 …“

  • Unter UNIX: In der Umgebungsvariablen „$?“ => „if [$? -eq 0]; then …“

Fehler die von GUI-Anwendungen in Message-Boxen ausgegeben werden, kannst Du nicht im (so einfach) Batch-Skript auslesen. Vielleicht schaust Du Dir einmal „AutoIT“ (http://www.autoitscript.com/autoit3/) an, das ist ein Makroprozessor, der Dir vielleicht entgegenkommt!?

Gruß
Volkmar

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]