Pregunta:
Actualmente trabajo en una gran empresa y tenemos serios problemas de latencia. Esto está sucediendo en un sistema de control de procesos y es inaceptable (abrir una válvula a veces demora 2 minutos antes del inicio del comando)
Quiero volver a comprobar cuando el equipo de red dice "todo está bien en la red". Entonces, quiero crear un bucle que haga ping al servidor y escriba el resultado en un archivo de texto.
No soy un experto en lotes, pero ¿cree que este código es correcto para usar?
@ECHO OFF
:LOOPSTART
time /T
ping xxx.xx.x.x -t >> filename.txt
sleep -m 3000
GOTO LOOPSTART
Respuesta:
Me parece bien, pero no es necesario repetirlo si desea hacer ping continuamente a la IP. Entonces simplemente podrías hacerlo así:
@ECHO OFF
set IPADDRESS=x.x.x.x
ping %IPADDRESS% -t >> filename.txt
Si desea hacer ping cada X minutos, use el ciclo:
@ECHO OFF
set IPADDRESS=x.x.x.x
set INTERVAL=60
:PINGINTERVAL
ping %IPADDRESS% -n 1 >> filename.txt
timeout %INTERVAL%
GOTO PINGINTERVAL
Como puede ver, reemplacé el comando de sleep
por timeout
. Esto se debe a que el sleep
no siempre está disponible en algunos sistemas, mientras que el timeout
suele timeout
.
¿Falta comandos de sleep
o timeout
en su sistema? No se preocupe. Simplemente reemplace el timeout
con el siguiente truco:
@ping 127.0.0.1 -n %INTERVAL% > nul
Este truco simplemente hace ping a su dirección local, y dado que responderá instantáneamente, podemos usar esto para emular un retraso en la ejecución.