Batch Datei - Pingbefehl
Hallo zusammen :) Ich versuche mit seit heute für die Firma folgendes Programm zusammen zu reimen. Es soll eine Pingabfrage von 10 - 128 starten und mir die nicht zu erreichenden IP's in eine Textdatei schreiben.
@echo off
color c
set /a n=10
:repeat
set /a n+=1
echo 10.46.101.%n%
ping -n 2 -w 50 10.46.101.%n%
if @echo Zielnetz nicht erreichbar. else @echo " IP nicht erreichbar. IP: 10.46.101.%n% "> ipaddresses.txt
if %n% lss 130 goto repeat
pause
exit
Mein Problem ist folgendes, ich weiß nicht wie ich das if und else richtig setze. Eine Abfrage mit Errorlevel wie z.B. die: IF %errorlevel% EQU 1 (@echo " IP nicht erreichbar. IP: 10.46.101.%n% "> ipaddresses.txt) ist leider nicht möglich, da auchg wenn der Zielhost nicht erreichbar ist trotsdem Datenpakete ankommen und somit meistens keine Pakete fehlen. Es würde einfach nichts in der Textdatei stehen, obwohl bei manchen der Zielhost nicht erreichbar ist.
Wie realisiere ich das if und else?
Freue mich über sinn- und verständnisvolle Antworten :)
Mit freundlichen Grüßen
Cedric :)
3 Antworten
Ich verstehe nicht wirklich, warum du in jedem Fall "nicht erreichbar" in die Textdatei schreiben willst. Die Lösung zu deinem Problem ist aber "&&" und " || ".
Mit "&&" kannst du festlegen, welcher Befehl ausgeführt werden soll, falls der vorangegangene erfolgreich war.
Mit " || " kannst du festlegen, welcher Befehl ausgeführt werden soll, falls der vorangegangene NICHT erfolgreich war:
ping -n 2 -w 50 10.46.101.%n% && echo IP erreichbar: 10.46.101.%n% 1>ipaddresses.txt || echo Zielnetz nicht erreichbar.
Um die Ausgabe von PING zu unterdrücken, kannst du hinter das "%n%" bzw vor das "&&" noch ein "1>nul 2>nul" machen:
ping -n 2 -w 50 10.46.101.%n% >nul 2>nul && ...
Auf die Seite bin ich vorher auch schon gestoßen, doch sie war nur wenig hilfreich. Ich habe das Problem so gelößt:
@echo off
color c
set /a n=10
:repeat
set /a n+=1
echo 10.46.101.%n%
ping -n 2 -w 50 10.46.101.%n%
IF %errorlevel% EQU 1 (@echo IP nicht erreichbar. IP: 10.46.101.%n%>> ipaddresses.txt)
if %n% lss 128 goto repeat
exit
stackoverflow.com/questions/13713318/ping-all-addresses-in-network-windows
j3ffdixon.blogspot.de/2014/04/batch-file-ping-ips-in-range-and-if_24.html