¿Cómo puedo interrumpir un bucle en un archivo por lotes de CMD utilizando una entrada de tecla específica?
Aquí está toda la idea:
Tengo un menú para probar el ping en diferentes servidores DNS en un archivo por lotes, como se muestra a continuación:
:MainMenu
ECHO 1. Servidor DNS 1
ECHO 2. Servidor DNS 2
Ahora, cuando el usuario elige una de las opciones anteriores, el proceso comienza a hacer ping al servidor seleccionado, en este caso, uso el servidor DNS de Google 8.8.8.8
:
:loopStarter
ECHO <strong><em>EL MODO DE PING AUTOMÁTICO ESTÁ ACTIVADO</em></strong>
ECHO Haciendo ping...
ping 8.8.8.8
CLS
GOTO loopStarter
Como puede ver, este conjunto de código crea un bucle y hace ping al servidor sin detenerse,
SIN EMBARGO,
Deseo detener el bucle al ingresar una tecla (cualquier tecla) para llevarme de vuelta al :MainMenu
===========
He visto y probado muchas respuestas como Aquí, pero desafortunadamente o no entiendo el código o no está relacionado con mi problema.
Agradecería si alguien pudiera guiarme.
davy.ai
Para detener el bucle y volver al Menú Principal al presionar cualquier tecla, puedes modificar tu código de la siguiente manera:
Aquí, agregamos el comando
PAUSE
para esperar la entrada del usuario. El>NUL
redirige la salida del comandoPAUSE
aNUL
, para que no veamos el mensaje “Presione cualquier tecla para continuar…”. Cuando el usuario presiona cualquier tecla, el bucle se rompe y el script vuelve a la etiqueta:MainMenu
.Ten en cuenta que también debes cambiar el comando
GOTO
al final del bucle porGOTO MainMenu
en lugar deGOTO loopStarter
, de lo contrario caerás en un bucle infinito.