2016-05-10 4 views
1

Bisschen lang hier.Ändern der Farbe in der Eingabeaufforderung basierend auf dem Ergebnis?

Wenn ich einen kontinuierlichen Ping-Befehl ausführen möchte, ist es möglich, die Ausgabe in einer anderen Farbe aufgeführt zu haben, wenn wir sagen, das Ergebnis ist jenseits eines bestimmten Punktes?

Beispiel:

Ping Ergebnis mit 22ms zurück kommt, weiß Ping Ergebnis mit 300+ kommt zurück, rot

Ist das überhaupt möglich? Muss ich stattdessen eine Batch-Datei erstellen?

Das unten aufgeführte Skript funktioniert wirklich gut. Allerdings brauche ich etwas zusätzliche Action damit. Wenn eine IP-Adresse abläuft, führt dieses Skript nichts aus. Es sitzt nur auf den nächsten Ping warten. Gibt es das überhaupt, um das zu integrieren?

+0

[möglich Duplikat] (http://stackoverflow.com/q/35654701/2152082) – Stephan

+0

Script aktualisiert –

Antwort

1

Eine rudimentäre Lösung wäre etwas im Sinne von.

@setlocal enableextensions enabledelayedexpansion 
@echo off 
set /p ipaddr="Enter ip or url: eg localhost or google.co.za or 192.168.0.1 " 
set /p cutoff="enter minimum good reply ms: eg 300 " 
set /a res = 0 - 1 
:loop 
for /f "tokens=7,9" %%a in ('ping -n 1 !ipaddr!') do (
set /a res = 0 - 1 
    if "%%a"=="Average" (
    set a=%%b 
    set /a res=!a:~0,-2! 
) 
) 

IF %res% == -1 (
    COLOR 2 
    echo %ipaddr% failed to respond in time 
) 
IF %res% LEQ %cutoff% (
    IF %res% NEQ -1 (
     COLOR 2 
     echo %ipaddr% responded in %res%ms 
    ) 
)else (
    COLOR 4 
    echo %ipaddr% responded in %res%ms 
) 
ping -n 3 127.0.0.1 >nul: 2>nul: 
goto :loop 

endlocal 

speichern es in eine .cmd-Datei und klicken Sie dann auf nur verdoppeln

+0

Timeout zu handhaben Sie Herr, sind erstaunlich. Ich habe es sehr leicht modifiziert, aber das ist perfekt. – nbarr7655

+0

Froh zu helfen :) –

+0

Ich habe eigentlich eine andere Anfrage. Wenn die Ping-Anforderung abläuft, ändert das Skript die Farbe noch oder beendet es das Skript? – nbarr7655