Actualmente estoy trabajando en una gran empresa y tenemos serios problemas de latencia. Esto está sucediendo en un sistema de control de proceso, y es inaceptable (abrir una válvula a veces toma 2 minutos antes del inicio del comando)
Quiero volver a verificar cuando el equipo de la 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 ¿crees que este código es correcto?
@ECHO OFF
:LOOPSTART
time /T
ping xxx.xx.x.x -t >> filename.txt
sleep -m 3000
GOTO LOOPSTART
windows
batch-file
ping
infinite-loop
Waza_Be
fuente
fuente
Respuestas:
A mí me parece bien, pero no hay necesidad de repetirlo si desea hacer ping continuamente a la IP. Entonces simplemente podrías hacerlo así:
Si desea hacer ping cada X minutos, use el bucle:
Como puede ver, reemplacé el
sleep
comando contimeout
. Eso es porquesleep
no siempre está disponible en algunos sistemas, mientras quetimeout
generalmente lo está.¿Falta
sleep
otimeout
comandos en su sistema? No te preocupes Simplemente reemplácelotimeout
con el siguiente truco: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.
fuente
timeout
consleep
. ¿Qué versión de Windows estás haciendo esto?Para una solución de una línea, use lo siguiente:
NÓTESE BIEN:
xxx.xxx.xxx.xxx
congoogle.com
3000
a60
(por 1 minuto) o10
(por 10 segundos)%
por%%
fuente
Para una solución de Windows, si está dispuesto a instalar wtee.exe , lo siguiente funcionará ( pingloop.bat ):
¡Aclamaciones!
fuente
Sé que es una pregunta de Windows (y una vieja), pero tal vez sea similar a Linux y OSX. Esto es lo primero que surgió cuando estaba buscando un comando simple para mantener el tráfico de red en mi computadora portátil. Puede ser útil para alguien que busca algo similar.
en un script bash:
Línea única ex pinging dns de google cada 30 segundos:
Funciona en OSX y Linux, aunque debería ser bastante estándar, no sé en qué sistema estás.
fuente
el interruptor de tiempo de espera no es lo mismo que está buscando como interruptor de "espera". El interruptor de tiempo de espera con el comando ping de Windows simplemente le dice a la ventana de comandos cuánto tiempo esperar antes de RECIBIR la respuesta, no cuánto esperar antes de enviar la respuesta SIGUIENTE.
fuente
La pregunta no está del todo clara. Aparentemente no hay uso en bucle continuo en un archivo por lotes que se adjunta a un archivo. Especialmente cuando este archivo por lotes se inicia por un evento externo repetido ... a menos que desee llenar el espacio en disco ... o para iniciar toneladas de mensajes de comando y estrangular el sistema ...
Supongo que debería haber un período de tiempo para las pruebas y luego el lote debería finalizar. También supongo que hoy la mayoría de los MS Windows están equipados con Powershell, lo que podría ser útil para este caso. Aquí está el twoliner:
Esto se puede poner en un archivo por lotes, o ejecutar como un script de PowerShell, en este caso eliminar 'Powershell' y las comillas dobles.
Aún así, bash en Windows parece ser la mejor opción ...
fuente
ampliando la respuesta de Sparks arriba, puse su código de una línea en un archivo por lotes con algunas modificaciones.
guardado como PingD.bat use lo siguiente para ejecutar PingD [nombre de máquina / IP] [retraso entre pings en segundos]
por ejemplo, PingD MyDC01 10 enviará un ping a MyDC01 cada 10 segundos.
fuente
Si desea pegarlo en una ventana de comandos en Windows ...
(para / l% a in () do @for / f "tokens = *"% b in ('ping -w 1000 -n 1 8.8.8.8 ^ | findtr "Solicitud de respuesta Destino desconocido"') do @echo% b & tiempo de espera 3> NUL)
Hace ping cada 3 segundos ... hasta que lo detengas
Esto es mejor porque no necesita escribir en un archivo de registro, (por qué realmente necesitaría un archivo de registro) solo en la ventana inmediata y le da los resultados deseados "inmediatamente" :)
Si por alguna razón también puede canalizar el archivo de registro haciendo esto: (para / l% a in () do @for / f "tokens = *"% b in ('ping -w 1000 -n 1 8.8. 8.8 ^ | findtr "Solicitud de respuesta Destino desconocido" ') do @echo% b & timeout 3> NUL)> file.txt
Además, puede ajustar el tiempo de espera cambiando el valor después del 'tiempo de espera', ya que en este caso es de 3 segundos ...
Y no tiene que guardar en un archivo por lotes ... Simplemente copie y pegue esta cadena de texto de este texto almacenado en una ubicación guardada en la nube ... o en la carpeta de comandos que desea usar ... etc.
fuente
En sistemas basados en Windows, podemos usar el siguiente comando para hacer ping a un servidor después de un intervalo específico
ping xxx.xxx.xxx.xxx -w xxxx -n xx >> c: \ logfile.txt
donde -w especifica los intervalos en milisegundos, por lo que 1000 ~ 1 segundo => 3000 por 3 segundos de retraso -n especifica el número de veces que ping enviará una consulta al servidor en xxx.xxx.xxx.xxx.
fuente
Este es el comando de Windows que uso para hacer ping a una IP específica en un intervalo específico (10 segundos en este ejemplo):
-dice ping continuamente.
-w dice espera tanto tiempo antes del próximo ping. Aquí hay un ejemplo de espera de 1 minuto:
Disfruta y buena suerte !!
fuente
-w
especifica el tiempo máximo de espera antes de considerar un ping "perdido", no el tiempo entre pings.