es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para detener el bucle y volver al Menú Principal al presionar cualquier tecla, puedes modificar tu código de la siguiente manera:

    :loopStarter
    ECHO ***EL MODO DE PING AUTOMÁTICO ESTÁ HABILITADO***
    ECHO Realizando ping...
    ping 8.8.8.8
    
    REM Esperar la entrada del usuario y romper el bucle
    PAUSE >NUL
    CLS
    GOTO MainMenu
    

    Aquí, agregamos el comando PAUSE para esperar la entrada del usuario. El >NUL redirige la salida del comando PAUSE a NUL, 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 por GOTO MainMenu en lugar de GOTO loopStarter, de lo contrario caerás en un bucle infinito.

Comments are closed.