Seite 1 von 1

Batch-File - Rückgabe eines Befehls weiterverarbeiten

Verfasst: Montag 29. August 2011, 20:43
von Teletrabi
Moin ihrs,

versuche gerade die Ausgabe des bekannten ping-Befehls weiterzuverarbeiten.
Folgender Code funktioniert zwar, speichert aber die Ausgabe in einer Datei zwischen. Das müsste sich doch auch noch eliminieren lassen.

Code: Alles auswählen

ping %1 -n 1 -w 200 > C:\pingtest.txt

for /F "tokens=11" %%i in (pingtest.txt) do set lost=%%i

IF NOT [%lost%]==[(0%%] GOTO VERLOREN
so ganz hab ich die mittlere Zeile auch noch nicht durchschaut, warum sie eigentlich funktioniert. Ursprünglich steckte da noch eine Funktion dazwischen, die die letzte Zeile der Ping-Ausgabe auslas und in eine weitere Datei schrieb, von wo sie dann mit der mittleren Zeile gelesen und der Wert für den Paketverlust nach %lost% geschrieben wurde.
Funktioniert unerwarteter Weise aber auch, wenn man die Datei mit der gesamten Ping-Ausgabe als Quelle dort einsetzt ohne explizit die letzte Zeile freizustellen.

Nunja, wie auch immer, letzten Endes wäre es schön, wenn man dort überhaupt keine Datei mehr beschreibt. Die mittlere Zeile zu ersetzen mit
for /F "tokens=11" %%i in (ping %1 -n 1 -w 200) do set lost=%%i
klappt hingegen nicht. Egal ob man den ping-Befehl nochmal in Klammern packt oder nicht.

Irgendwer eine Idee?

Verfasst: Montag 29. August 2011, 23:23
von Funkenschlosser
Eine Lösung habe ich auch nicht zur Hand, kann Dir aber sagen, weshalb Dein Vorschlag nicht funktioniert.

In den runden Klammern der FOR-Anweinsung muss eine Datei oder Dateimaske stehen. Ein Befehl ist dort nicht zulässig. So etwas kenne ich nur von Unix-Shells. Wie das unter Windows geht und ob das überhaupt geht, weiß ich nicht aus dem Kopf

Funky

Verfasst: Dienstag 30. August 2011, 00:51
von Teletrabi
Moin,

korrektur zum posting oben - sollte egal ob mans nochmal in anführungszeichen packt heißen. gemeint waren diese: " - geht nicht.

Klappt nun aber - wenn man ' nutzt...

Verfasst: Dienstag 30. August 2011, 01:22
von gnye17
Hallo Teletrabi,

es gab mal Programme, mit denen man den ErrorLevel eines Batch-Jobs festlegen kann. Und dann gab's noch exit /b. Lies mal auf dieser Seite nach. Der für Deine Fragestellung interessante Teil beginnt etwa in der Mitte der Seite. Ob das unter den heutigen Windows-Versionen noch funktioniert, kann ich Dir nicht sagen. Musst Du halt ausprobieren.

Schöne Grüße,
Gnye