Conoseguir los milisegundos de retardo de un PING y meterlos en una variable.

Al ejecutar un PING, consigo en pantalla, o en fichero txt la información de los milisegundos de retardo, así por ejemplo si tengo:

C:\>ping 8.8.8.8

Haciendo ping a 8.8.8.8 con 32 bytes de datos:
Respuesta desde 8.8.8.8: bytes=32 tiempo=15ms TTL=54
Respuesta desde 8.8.8.8: bytes=32 tiempo=16ms TTL=54
...

Si ejecuto PING XX. XX. XX. Xx >fichero.TXT, obtengo la información en ese fichero

... Necesitaría un batch que me extrajera del fichero txt los milisegundos de retardo, en este caso 15, 16 y/o 19 y pudiera almacenarlo en una (o varias )variable.

Respuesta
2

Si quieres hacerlo directamente, sin necesidad de guardar el resultado del ping en un fichero intermedio, podrías usar esto:

for /f "tokens=7,8* delims== " %%a in ('ping 8.8.8.8 ^| findstr "tiempo"') DO (
Echo La temporizacion es de:%%a)

Te iría dejando la temporización en la variable %%a para cada uno de los intentos (incluye también las "unidades", los valores serían del tipo 15ms, 16ms, etc.). Si quieres quitar las unidades habría que asignar ese valor a otra variable despreciando los dos últimos caracteres. Podría ser algo como:

@echo off
for /f "tokens=7,8* delims== " %%a in ('ping 8.8.8.8 ^| findstr "tiempo"') DO (call :tratar %%a)
goto :fin
:tratar
set v=%1
echo La temporizacion es de: %v%
set v=%v:~0,-2%
echo ahora sin unidades: %v%)
goto :EOF
:Fin

Si prefieres usar el fichero intermedio puedes usar el mismo esquema retocando el FOR como sigue.

for /f "tokens=7,8* delims== " %%a in ('type FICHERO.TXT ^| findstr "tiempo"') DO (
Echo La temporizacion es de:%%a)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas