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-Key: 196444

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

Printed on: April 25, 2024 at 07:04 o'clock

Member: bastla
bastla Jan 03, 2013 at 15:11:58 (UTC)
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
Member: Nr60730
Nr60730 Jan 03, 2013 updated at 16:33:36 (UTC)
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
Member: bastla
bastla Jan 03, 2013 at 16:47:24 (UTC)
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
Member: Nobbi.the.Great
Nobbi.the.Great Jan 07, 2013 updated at 13:02:53 (UTC)
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.ä.)?
Member: bastla
bastla Jan 07, 2013 at 14:49:51 (UTC)
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