pacco0903
Goto Top

Batch Ping ausgabe sortieren oder trennen

Hey,

also ich habe eine .batch erstellt mit diesem befehlen :

:Start
echo %date%-%time% >>C:\log.ods
echo off
ping 172.217.18.14 -n 1 >>C:\log.ods
goto Start

und die ausgabe sieht so aus :

31.10.2018-21:09:59,30 

Ping wird ausgeführt für 172.217.18.14 mit 32 Bytes Daten:
Antwort von 172.217.18.14: Bytes=32 Zeit=21ms TTL=55

Ping-Statistik für 172.217.18.14:
    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 21ms, Maximum = 21ms, Mittelwert = 21ms
31.10.2018-21:09:59,34 


nun ist meine frage ob ich die Ausgabe sortieren oder anders trennen kann das meine Ausgabe so aussieht :
31.10.2018-21:09:59,30 ;Antwort von 172.217.18.14;Bytes=32;Zeit=21ms;TTL=55;Pakete: Gesendet = 1 Empfangen = 1;Verloren = 0 (0% Verlust),

denn ich möchte die Daten in einer Tabelle importieren, die so aussehe:

Datum | IP | Größe | Ping/ms | TTL | Packet Gesendet, Empfangen | Verloren (Verlust %) |

31.10.2018-21:09:59,30 | Antwort von 172.217.18.14 | Bytes=32 | Zeit=21ms | TTL=55 | Gesendet = 1 Empfangen = 1 | Verloren = 0 (0% Verlust) |

Content-Key: 391344

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

Printed on: April 19, 2024 at 21:04 o'clock

Member: rubberman
Solution rubberman Oct 31, 2018 at 21:08:09 (UTC)
Goto Top
Einfach die Ausgabe in FOR /F Schleifen auseinander nehmen und so wie du sie brauchst wieder zusammen bauen.
:Start
set "l1=" &set "l2=" &set "l3="  
for /f "delims=" %%i in ('ping 172.217.18.14 -n 1 ^| findstr "Antwort Pakete Verlust"') do (  
  if not defined l1 (
    set "l1=%%i"  
  ) else if not defined l2 (
    set "l2=%%i"  
  ) else (
    set "l3=%%i"  
  )
)

for /f "tokens=1-6 delims=: " %%a in ("%l1%") do (  
  for /f "tokens=1-7* delims=, " %%g in ("%l2%") do (  
    for /f "tokens=1,2 delims=, " %%o in ("%l3%") do (  
      echo %date%-%time%;%%a %%b %%c;%%d;%%e;%%f;%%g %%h %%i %%j, %%k %%l %%m;%%n %%o %%p
    )
  )
)
goto Start
Steffen
Mitglied: 137443
137443 Nov 01, 2018 updated at 09:42:13 (UTC)
Goto Top
Ich würde da für ja gleich einen Powershell-Einzeiler hernehmen anstatt die PING-Ausgaben umständlich zu parsen, wir leben ja nicht mehr in den 80ern:
Test-Connection '172.217.18.14' -Count 1 | select  @{n='Datum';e={get-date -f 'G'}},Address,IPv4Address,BufferSize,ResponseTime | export-csv .\Verbindungsdaten.csv -NoType -Delimiter ";" -Encoding UTF8
Gruß l.