DOS Batch Errorlevel geht unter XP, aber nicht unter W2K
Problem mit Errorlevel unter W2K
Hallo zusammen,
ich muß innerhalb einer Batch den Errorlevel von Ping auswerten:
ping tonixp
if errorlevel 1 goto lanstart1
unter XP funktioniert es (wenn kein Ping, geht er zu lanstart1)
unter W2K Server ignoriert er den goto und macht einfach weiter.
Ich finde den Fehler einfach nicht, für Hilfe wäre ich dankbar!
Gruß - Toni
Hallo zusammen,
ich muß innerhalb einer Batch den Errorlevel von Ping auswerten:
ping tonixp
if errorlevel 1 goto lanstart1
unter XP funktioniert es (wenn kein Ping, geht er zu lanstart1)
unter W2K Server ignoriert er den goto und macht einfach weiter.
Ich finde den Fehler einfach nicht, für Hilfe wäre ich dankbar!
Gruß - Toni
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 32738
Url: https://administrator.de/contentid/32738
Ausgedruckt am: 19.11.2024 um 23:11 Uhr
7 Kommentare
Neuester Kommentar
Moin Toni,
sind ja nur begrenzt viele Beteiligte in den zwei Zeilen, von daher auch wenige potentiell Schuldige.
Es gibt ja nur zwei wahrscheinliche Erklärungen:
1) die Ping.exe vom Win2000S (oder W2003S??) liefert fälschlicherweise bei Misserfolg nicht ein Errorlevel größer 1
-oder-
2) die "if errorlevel"-Syntax des CMD-Interpreters hätte sich geändert.
Check:
Beide Möglichkeiten kannst Du prüfen, indem Du es im Batch (oder zum Test am CMD-Prompt) um eine Zeile erweiterst:
ping tonixp
echo Errorlevel ist: [%errorlevel%]
if errorlevel 1 goto lanstart1
Den Test auf eine marode Ping.exe kannst Du auch einfach machen.
Kopier Dir von dem XP-Rechner die Ping.exe auf den W200x-Server, meinetwegen unter dem Namen "Ping_vonXP.exe" und teste das Verhalten dieser Ping_vonXP auf dem W200xS.
ping_vonXP tonixp
echo Errorlevel ist: [%errorlevel%]
if errorlevel 1 goto lanstart1
So weit erstmal
Biber
sind ja nur begrenzt viele Beteiligte in den zwei Zeilen, von daher auch wenige potentiell Schuldige.
Es gibt ja nur zwei wahrscheinliche Erklärungen:
1) die Ping.exe vom Win2000S (oder W2003S??) liefert fälschlicherweise bei Misserfolg nicht ein Errorlevel größer 1
-oder-
2) die "if errorlevel"-Syntax des CMD-Interpreters hätte sich geändert.
Check:
Beide Möglichkeiten kannst Du prüfen, indem Du es im Batch (oder zum Test am CMD-Prompt) um eine Zeile erweiterst:
ping tonixp
echo Errorlevel ist: [%errorlevel%]
if errorlevel 1 goto lanstart1
Den Test auf eine marode Ping.exe kannst Du auch einfach machen.
Kopier Dir von dem XP-Rechner die Ping.exe auf den W200x-Server, meinetwegen unter dem Namen "Ping_vonXP.exe" und teste das Verhalten dieser Ping_vonXP auf dem W200xS.
ping_vonXP tonixp
echo Errorlevel ist: [%errorlevel%]
if errorlevel 1 goto lanstart1
So weit erstmal
Biber
Hi,
da die Unterscheidung nicht übers Errorlevel geht, vielleicht über die Ausgabe selbst eine Entscheidung durchführen.
goto :end
REM tonixp gibt Antwort
:sub1
goto :end
REM tonixp gibt keine Antwort
:sub2
Mach was...
goto :end
Jetzt könnest Du noch ein Problem bekommen, wenn Server und Client unterschiedliche Sprachen nutzen.
Dann als Antwort "TTL=128" oder so ähnlich eingeben, dies ist bei beiden noch gleich.
Oder musst Du den Errorlevel auswerten?
Gruß Miguel
:end
da die Unterscheidung nicht übers Errorlevel geht, vielleicht über die Ausgabe selbst eine Entscheidung durchführen.
REM tonixp gibt Antwort
:sub1
goto :end
REM tonixp gibt keine Antwort
:sub2
Mach was...
goto :end
Jetzt könnest Du noch ein Problem bekommen, wenn Server und Client unterschiedliche Sprachen nutzen.
Dann als Antwort "TTL=128" oder so ähnlich eingeben, dies ist bei beiden noch gleich.
Oder musst Du den Errorlevel auswerten?
Gruß Miguel
:end
Moin Toni,
mit Miguels vorschlag sollte es gehen...
Eventuell haben die allerdings irgendwo einen Bugfix nachgeschoben - ich würde zumindest nochmal auf den M$-Seiten danach suchen.
Auf W2000 (nicht Server) funktioniert die ping.exe. IMHO.
Sonst poste doch bitte von Deiner ping.exe (der maroden) mal
- Versionsnummer
- Datum
- Größe
hier im Forum.
Eventuell kann Dir dann jemand eine funktionierende zumailen. Bezahlt/lizenziert hab ihr die ja eigentlich.
Grüße
Biber
mit Miguels vorschlag sollte es gehen...
Verwunderlich ist die Pingerei aber trotzdem...
Wieso? Wie heißt die Firma, von der ihr das Ping gekauft habt? Eventuell haben die allerdings irgendwo einen Bugfix nachgeschoben - ich würde zumindest nochmal auf den M$-Seiten danach suchen.
Auf W2000 (nicht Server) funktioniert die ping.exe. IMHO.
Sonst poste doch bitte von Deiner ping.exe (der maroden) mal
- Versionsnummer
- Datum
- Größe
hier im Forum.
Eventuell kann Dir dann jemand eine funktionierende zumailen. Bezahlt/lizenziert hab ihr die ja eigentlich.
Grüße
Biber
@leknilk0815
Danke für die Recherche, Toni.
Ist schon eine Information, die ich im Hinterkopf behalten werde.
Denn diese Ping-Errorlevel-Auswertung ist durchaus auch in Batches in Produktivumgebungen eingebaut.
Und nicht nur da, wo ich aktiv war.
Was ich nicht begreife - was um Himmels Willen wurde bei M$ beim Funktionstest der Ping.exe geprüft?
Mögliche Tippfehler im Wort pinging? Biologische Abbaubarkeit? Politically correctness?
Zu allem Überfluß hat M$ den gleichen Bug bei der Ping.exe schon mal ausgeliefert - bei einer der ersten NT-Versionen...
*kopfschüttel..kopfschüttel..kopfschüttel...*
Grüße
Biber
Danke für die Recherche, Toni.
Ist schon eine Information, die ich im Hinterkopf behalten werde.
Denn diese Ping-Errorlevel-Auswertung ist durchaus auch in Batches in Produktivumgebungen eingebaut.
Und nicht nur da, wo ich aktiv war.
Was ich nicht begreife - was um Himmels Willen wurde bei M$ beim Funktionstest der Ping.exe geprüft?
Mögliche Tippfehler im Wort pinging? Biologische Abbaubarkeit? Politically correctness?
Zu allem Überfluß hat M$ den gleichen Bug bei der Ping.exe schon mal ausgeliefert - bei einer der ersten NT-Versionen...
*kopfschüttel..kopfschüttel..kopfschüttel...*
Grüße
Biber