tobi-20
Goto Top

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

Content-Key: 116661

Url: https://administrator.de/contentid/116661

Printed on: April 27, 2024 at 00:04 o'clock

Member: miniversum
miniversum May 24, 2009 at 16:19:14 (UTC)
Goto Top
Das sollte es so gehen:
@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
Mitglied: 77559
77559 May 24, 2009 at 16:32:24 (UTC)
Goto Top
Hallo Tobi

@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
Member: tobi-20
tobi-20 May 24, 2009 at 18:31:28 (UTC)
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
Mitglied: 77559
77559 May 24, 2009 at 20:51:34 (UTC)
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
Mitglied: 78632
78632 May 24, 2009 at 20:55:44 (UTC)
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?
@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
)
Member: tobi-20
tobi-20 May 25, 2009 at 13:47:56 (UTC)
Goto Top
Alles klar, ich danke euch! Funktioniert genau so wie ich mir das vorgestellt habe. ;)

Gruß Tobi