Foros del Web » Programación para mayores de 30 ;) » Programación General »

Batch para guardar un registro de los ping realizados

Estas en el tema de Batch para guardar un registro de los ping realizados en el foro de Programación General en Foros del Web. Hay un hilo cerrado en este foro en el que muestran como guardar en un archivo todos ping para ver si ha habido cortes. Me ...
  #1 (permalink)  
Antiguo 18/01/2019, 11:58
 
Fecha de Ingreso: junio-2011
Mensajes: 41
Antigüedad: 7 años, 9 meses
Puntos: 0
Batch para guardar un registro de los ping realizados

Hay un hilo cerrado en este foro en el que muestran como guardar en un archivo todos ping para ver si ha habido cortes.

Me gustaria modificarlo para poder hacer que se guarde en tiempo real en el archivo.

Código:
@echo off
setlocal

for /F "delims=" %%i in ('ping 127.0.0.1 -t') do call :format "%%i"
goto :done

:format
echo %date% %time% %1 1>> output.txt

:done
De esta forma se guarda todo en una linea pero hay que depender de que el usuario le de a Ctrl+C y a S.
Tengo otro codigo en el que se va guardando en tiempo real, asi aunque se apague el equipo o se cierre directamente la ventana el archivo tiene todo el registro.

Ademas hago que cada dia cree un archivo nuevo con la fecha y hora, ya que hay que dejarlo todo el dia corriendo.

Código:
rem @echo off

set Any=%Date:~-4%
set Mes=%Date:~3,2%
set Dia=%Date:~0,2%

set Hor=%Time:~0,2%
set Min=%Time:~3,2%
set Seg=%Time:~6,2%

REM Creamos el archivo cada vez que se ejecuta el programa con la fecha y hora en el nombre y la primera linea
set nombre=%Any%-%Mes%-%Dia%__%Hor%-%Min%-%Seg%
echo %nombre% >%nombre%.txt

REM Hacemos ping y lo añadimos poniendo la fecha delante linea a linea

:LOOPSTART 

set Any=%Date:~8%
set Mes=%Date:~3,2%
set Dia=%Date:~0,2%

set Hor=%Time:~0,2%
set Min=%Time:~3,2%
set Seg=%Time:~6,2%

rem set Respuesta=ping 192.168.1.4
echo %Any%-%Mes%-%Dia%__%Hor%-%Min%-%Seg% >>%nombre%.txt
ping 192.168.1.4 -n 1 >>%nombre%.txt

REM tiempo que queremos que pase entre ping y ping en segundos
timeout 2 > NUL

GOTO LOOPSTART
Lo que no consigo es que me meta cada ping con su hora en una linea. He mirado la documentacion del for, pero lo empleado en el primer ejemplo, que si que guarda cada ping en una linea, tiene bastantes cosas mas que no entiendo. ¿Hay forma de combinar los dos ejemplos de algun modo para meta cada linea en tiempo real?
  #2 (permalink)  
Antiguo 25/01/2019, 02:39
 
Fecha de Ingreso: junio-2011
Mensajes: 41
Antigüedad: 7 años, 9 meses
Puntos: 0
Respuesta: Batch para guardar un registro de los ping realizados

Aqui la solución:
Código:
@echo off
REM Curiosamente si meto el formato de fecha y hora como en la siguiente linea, luego no se repite el loop
rem set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__%time:~0,2%_%time:~3,2%_%time:~6,2%

REM damos formato a la fecha y la hora y lo guardamos en cada variable
set Any=%Date:~-4%
set Mes=%Date:~3,2%
set Dia=%Date:~0,2%

set Hor=%Time:~0,2%
set Min=%Time:~3,2%
set Seg=%Time:~6,2%

REM Creamos el archivo cada vez que se ejecuta el programa con la fecha y hora en el nombre y la primera linea
set nombre=%Any%-%Mes%-%Dia%__%Hor%-%Min%-%Seg%
echo %nombre% >%nombre%.txt

REM Hacemos ping y lo añadimos poniendo la fecha delante linea a linea

:LOOPSTART 

    (
      FOR /L %%i in (1,1,1) do (
        <nul (set /p tm=%date% %time:~,-3% )
        PING -n 1 8.8.8.8 | FIND "TTL"
        IF ERRORLEVEL 1 ECHO Error, Tiempo de espera agotado. No se ha podido conectar con la IP. 
      )
    ) >> %nombre%.txt

REM tiempo que queremos que pase entre ping y ping en segundos
timeout 1 > NUL

GOTO LOOPSTART

pause
Y el archivo lo crea asi:
Cita:
25/01/2019 10:50:26 Respuesta desde 8.8.8.8: bytes=32 tiempo=16ms TTL=119
25/01/2019 10:50:28 Respuesta desde 8.8.8.8: bytes=32 tiempo=14ms TTL=119
25/01/2019 10:50:30 Respuesta desde 8.8.8.8: bytes=32 tiempo=14ms TTL=119
25/01/2019 10:50:31 Error, Tiempo de espera agotado. No se ha podido conectar con la IP.
25/01/2019 10:50:32 Error, Tiempo de espera agotado. No se ha podido conectar con la IP.
25/01/2019 10:50:41 Error, Tiempo de espera agotado. No se ha podido conectar con la IP.
25/01/2019 10:50:43 Error, Tiempo de espera agotado. No se ha podido conectar con la IP.
25/01/2019 10:50:45 Respuesta desde 8.8.8.8: bytes=32 tiempo=14ms TTL=119
25/01/2019 10:50:47 Respuesta desde 8.8.8.8: bytes=32 tiempo=14ms TTL=119
25/01/2019 10:50:49 Respuesta desde 8.8.8.8: bytes=32 tiempo=17ms TTL=119
25/01/2019 10:50:51 Respuesta desde 8.8.8.8: bytes=32 tiempo=14ms TTL=119



La zona horaria es GMT -6. Ahora son las 14:01.