2016-05-12 5 views
-1

Ich fragte gestern über das Ändern der Farbe in der Eingabeaufforderung basierend auf einem Ping-Ergebnis. Ein Benutzer war so nett, mir das folgende Skript zu liefern.Ändern Sie die Farbe in der Eingabeaufforderung basierend auf Ping-Ergebnis?

Das Skript funktioniert gut bis auf ein Problem. Wenn die Verbindung abläuft, wird nichts unternommen. Es macht nur eine Art Pause. Wie würde ich dieses Skript aktualisieren, um eine Variable oder etwas hinzuzufügen, die den Text auch ändert, wenn ein Timeout gemeldet wird?

@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 " 
:loop 
for /f "tokens=7,9" %%a in ('ping -n 1 !ipaddr!') do (
    if "%%a"=="Average" (
    set a=%%b 
    set /a res=!a:~0,-2! 
) 
) 

if %res% LEQ %cutoff% (
    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 
+0

Mögliches Duplikat von [Farbe in Eingabeaufforderung ändern basierend auf Ergebnis?] (Https://stackoverflow.com/questions/37148086/change-color-in-command-prompt-based-on-result) –

Antwort

0

Es gibt keine „Average“, wenn es keine Antwort, so dass Ihre Variablen bleiben unverändert (zeige die letzten „gültig“ Wert)

Fügen Sie einfach set res=No_Response zwischen :loop und for .... die Variable vorgegeben vor der Ping.

+0

PERFECT! Vielen Dank! Ich denke, ich bin bereit. Für jetzt ist das so. :) – nbarr7655

Verwandte Themen