Wenn Ping kleiner ist als 20, Befehl ausführen
Hi,
ich habe an meinem Laptop eine USB Festplatte angeschlossen. Die automatischen Tasks starten jeden abend um 19 Uhr ein Befehl, der dann mit dem SyncToy 2.0 automatisch meine Daten Synchronisiert.
Jetzt möchte ich, dass eine Batch Datei zuerst meinen Server anpingt und wenn der Ping unter z.b. 20ms liegt soll er einen anderen Befehl ausführen um statt mit der Festplatte, die dann in meiner Wohnung liegt, mit dem Server zu synchronisieren der im Netzwerk zuhause ist. Das Problem ist, dass ich den Server dank VPN auch von der Wohnung aus erreiche aber nur sehr langsam und deswegen möchte ich den Ping Test machen.
Wenn jemand eine Lösung oder andere Alternative kennt, bitte ich euch zu posten.
Vielen Dank
ich habe an meinem Laptop eine USB Festplatte angeschlossen. Die automatischen Tasks starten jeden abend um 19 Uhr ein Befehl, der dann mit dem SyncToy 2.0 automatisch meine Daten Synchronisiert.
Jetzt möchte ich, dass eine Batch Datei zuerst meinen Server anpingt und wenn der Ping unter z.b. 20ms liegt soll er einen anderen Befehl ausführen um statt mit der Festplatte, die dann in meiner Wohnung liegt, mit dem Server zu synchronisieren der im Netzwerk zuhause ist. Das Problem ist, dass ich den Server dank VPN auch von der Wohnung aus erreiche aber nur sehr langsam und deswegen möchte ich den Ping Test machen.
Wenn jemand eine Lösung oder andere Alternative kennt, bitte ich euch zu posten.
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 116661
Url: https://administrator.de/forum/wenn-ping-kleiner-ist-als-20-befehl-ausfuehren-116661.html
Ausgedruckt am: 26.04.2025 um 16:04 Uhr
6 Kommentare
Neuester Kommentar

Hallo Tobi
Gruß
LotPings
Edit: ^< als delimiter hinzugefügt, wenn Zeit kleiner als 1 ms
Edit2: Logik auf Anregung blablanicks umgestellt und eine Pause eingefügtl
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
@echo off
set Host=Name oder IP
if defined MS set "MS="
for /F "tokens=3 delims==m^<" %%A in ('ping -n 1 %Host% ^|find "TTL" ') do Set "MS=%%A"
if not defined MS @echo Host %Host% ist nicht erreichbar & Pause & goto :eof
if %MS% LEQ 20 (
echo Kleiner gleich 20 ms
) Else (
echo Größer 20 ms
)
Gruß
LotPings
Edit: ^< als delimiter hinzugefügt, wenn Zeit kleiner als 1 ms
Edit2: Logik auf Anregung blablanicks umgestellt und eine Pause eingefügtl

Hallo Tobi,
ja ich hab das bei auch noch mal getestet, wenn dein Netzwerk sehr schnell ist kommt als als Antwort sowas wie:
Als delimiter hatte ich das problematische kleiner Zeichen nicht berücksichtigt. ich ändere das oben im Source. dann sollte das auch hinhauen.
Gruß
LotPings
ja ich hab das bei auch noch mal getestet, wenn dein Netzwerk sehr schnell ist kommt als als Antwort sowas wie:
Antwort von 192.168.x.yy: Bytes=32 Zeit<1ms TTL=128
Als delimiter hatte ich das problematische kleiner Zeichen nicht berücksichtigt. ich ändere das oben im Source. dann sollte das auch hinhauen.
Gruß
LotPings

Wenn eine falsche Adresse verwendet wird, kommt keine im Script auswertbare Meldung, sondern am Ende (nicht sichtbar im Batch) eine Fehlermeldung: "20" ist syntaktisch an dieser Stelle nicht verwendbar.
Wie wäre es denn damit?
Wie wäre es denn damit?
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
@echo off
set Host=Name oder IP
set MS=
rem for /F "tokens=3 delims==m" %%A in ('ping -n 1 %Host% ^|find "TTL" ') do Set "MS=%%A"
for /F "tokens=3 delims==m^<" %%A in ('ping -n 1 -w 100 %Host% ^|find "TTL" ') do Set "MS=%%A"
if not defined MS @echo Host %Host% ist nicht erreichbar & goto :eof
if %MS% LEQ 20 (
@echo Kleiner gleich 20 ms & pause
) Else (
@echo 20 ms sind ueberschritten & pause
)