nobbi.the.great
Goto Top

Ping Ausgabe in Variable schreiben und diese später mit find durchsuchen

Hallo Profis

Ich suchte und fand einiges, aber nichts davon half mir.

Ich pinge einen Rechner an. Das Ergebniss "Antwort von xx.xx.xx.xx: Bytes=32 Zeit=2ms TTL=124" soll dabei in einer Variablen landen. Diese will ich später nach "TTL=" mit find durchsuchen.

Ich kriege die Syntax aber nicht zusammen.

Ablauf:

Ping host -n2 -w 4000 >var (irgendwie in eine Variable schreiben) | find "TTL=" in var (irgendwie in der Variablen suchen) && goto :next-step

Es geht natürlich auch ohne Variable, aber dann sehe ich die Ping Ausgabe in der Dos-Box, was aber nicht sein soll.
Wenn ich Ping in >nul schicke, sehe ich die Ausgabe zwar nicht, kann es aber auch nicht mehr durchsuchen.

Bin für jede Hilfe dankbar.

Grüße

Content-ID: 196444

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

Ausgedruckt am: 07.11.2024 um 22:11 Uhr

bastla
bastla 03.01.2013 um 16:11:58 Uhr
Goto Top
Hallo Nollosch!
Wenn ich Ping in >nul schicke, sehe ich die Ausgabe zwar nicht, kann es aber auch nicht mehr durchsuchen.
Dann schicke doch nur das Ergebnis des "find" ins Nirwana:
Ping host -n2 -w 4000|find "TTL=">nul && goto :next-step
Grüße
bastla
Nr60730
Nr60730 03.01.2013 aktualisiert um 17:33:36 Uhr
Goto Top
moin Bastla,

Zitat von @bastla:
Hallo Nollosch!
Wenn ich Ping in >nul schicke, sehe ich die Ausgabe zwar nicht, kann es aber auch nicht mehr durchsuchen.
Dann schicke doch nur das Ergebnis des "find" ins Nirwana:
Ping host -n2 -w 4000|find "TTL=">nul && goto :next-step

Prinzipell ein guter halberAnsatz, aber nein ich bin weder ossi noch ein Schwaebli

das grützt doch in die Greife - obwohl es auf den ersten Blick ......nix anzeigt, wie versprochen, aber warum? face-wink

C:\>ping localhost -n2 -w4000|find "TTL"

C:\>

C:\>ping localhost -n2 -w4000
Ungültiger Wert für die Option -n2. Der Gültige Bereich liegt zwischen 1 und 429
4967295.

C:\>
da fehlt ein paar Leherzeichen face-wink

Um ganze kürzer (eigentlich ist das doch dein Part) zu machen:
C:\>for /f "tokens=6" %a in ('ping localhost -n 2 -w 4000^|find "TTL"') do echo
%a

 :\>echo TTL=128
TTL=128

 :\>echo TTL=128
TTL=128

C:\>

Wobei -n 2 und ein echo / oder Set... das könnte eine lange Geburt werden.
Grüße
bastla

Gruß zurück und frohes Neues Jahr
bastla
bastla 03.01.2013 um 17:47:24 Uhr
Goto Top
@ Nr60730
Danke für das Nachreichen des Leerzeichens - aber wozu die Schleifenvariante gut sein soll, habe ich nicht verstanden (da mE Nollosch ja nur wissen wollte, ob überhaupt eines der beiden Pakete angekommen ist, um im Erfolgsfall was auch immer zu tun) ...

Grüße
bastla
Nobbi.the.Great
Nobbi.the.Great 07.01.2013 aktualisiert um 14:02:53 Uhr
Goto Top
@bastla

genial!!!! face-smile Danke

Da bin ich nicht drauf gekommen. Ich freu mich!

@Nr60730

Der Code war doch nur zur Veranschaulichung, nicht funktionell.
Bastla hat das schon richtig erkannt. Dir trotzdem auch ein Danke.


Zum Thema: Kann man so eine Ausgabe denn in eine Variable legen um diese später dann weiterzuverwenden (ohne erst in eine .txt zu schreiben o.ä.)?
bastla
bastla 07.01.2013 um 15:49:51 Uhr
Goto Top
Hallo Nollosch!
Kann man so eine Ausgabe denn in eine Variable legen um diese später dann weiterzuverwenden (ohne erst in eine .txt zu schreiben o.ä.)?
Da die Ausgabe ja mehrzeilig ist, unmittelbar nicht - Du könntest aber natürlich das Ergebnis in einer Variablen festhalten
set "OK="  
ping %host% -n 2 -w 4000|find "TTL=">nul && set "OK=true"  
if defined OK echo %host% hat geantwortet
bzw einen Wert aus einer einzelnen Zeile "mitnehmen", zB
@echo off & setlocal
for /f "tokens=11 delims=( " %%i in ('ping %host%^|findstr "Verlust"') do set "Verl=%%i"  
echo %Verl%
::Prozentzeichen entfernen
setlocal enabledelayedexpansion
set "Verl=!Verl:%%=!"  
endlocal & set "Verl=%Verl%"  
echo %Verl%
Grüße
bastla