tobi-20

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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

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

miniversum
miniversum 24.05.2009 um 18:19:14 Uhr
Goto Top
Das sollte es so gehen:
1
2
3
4
@echo off
FOR /F "tokens=9 delims= " %%i in ('ping www.google.de') do set "mwzeit=%%i"  
set mwzeit=%mwzeit:~0,-3%
if %mwzeit% lss 20 echo kleiner als 20
77559
77559 24.05.2009 um 18:32:24 Uhr
Goto Top
Hallo Tobi

1
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
tobi-20
tobi-20 24.05.2009 um 20:31:28 Uhr
Goto Top
Danke schonmal für die vielversprechenden Antworten.

Zu der 2. Lösung habe ich noch eine Frage. Wenn ich eine IP im Netzwerk eintrage passiert nichts, irgend ein Fehler der aber zu schnell verschwindet. Wenn ich etwas höheres anpinge führt er das Else mit Größer 20 ms aus.

Muss ich zur IP noch irgendwas an deinem Beispiel anpassen?

Gruß
Tobi
77559
77559 24.05.2009 um 22:51:34 Uhr
Goto Top
Hallo Tobi,

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
78632
78632 24.05.2009 um 22:55:44 Uhr
Goto Top
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?
1
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
)
tobi-20
tobi-20 25.05.2009 um 15:47:56 Uhr
Goto Top
Alles klar, ich danke euch! Funktioniert genau so wie ich mir das vorgestellt habe. ;)

Gruß Tobi