En las secuencias de comandos por lotes en Windows, los desarrolladores pueden controlar el flujo de las secuencias de comandos utilizando varias técnicas o métodos para introducir pausas o esperas. Los comandos 'pausar' y 'esperar' son dos formas de controlar el flujo de sus archivos por lotes. El comando 'pausar' detiene la ejecución de un archivo por lotes mientras presenta el mensaje 'Presione cualquier tecla para continuar ...'. El archivo por lotes no se puede ejecutar hasta que el usuario presione una tecla. La ejecución del archivo por lotes se suspende durante el número de segundos indicado por la instrucción de espera.
Comando de pausa de archivos por lotes
El comando 'pausar' de un archivo por lotes detiene la ejecución del archivo por lotes mientras muestra el mensaje en la línea de comando. El archivo por lotes no se ejecutará hasta que el usuario presione una tecla. El comando que detiene la siguiente ejecución es útil. Es beneficioso ejecutar el archivo por lotes directamente y ver el resultado deseado en la pantalla.
La sintaxis del comando 'pausar' es:
Pausa
Solicitar al usuario información
El comando 'pausar' en el siguiente script por lotes muestra el mensaje 'Presione cualquier tecla para continuar...' cuando el usuario ejecuta este archivo por lotes. Antes de que el archivo por lotes pase al comando 'dir', el usuario debe presionar una tecla.
@eco apagado
rem Este archivo por lotes se detiene para que el usuario presione una tecla.
echo Hola, Bienvenido a la demostración del comando PAUSE.
echo La ejecución del script continúa después de la pausa.
pausa
rem Este archivo por lotes continúa con el siguiente comando.
eco ¡Gracias!
tú
Cuando el usuario presiona cualquier tecla usando el teclado, este proceso por lotes continúa:
Comando de espera de archivos por lotes
El código que proporcionó es un archivo por lotes que abre dos programas: Bloc de notas y Paint. El código es el siguiente:
@eco apagadoecho Iniciando el primer programa.
INICIO /B /ESPERAR notepad.exe
Bloc de notas echo abierto en segundo plano con éxito
echo Iniciando el segundo programa.
INICIAR /ESPERAR mspaint.exe
echo La pintura se abrió con éxito.
cmd/k
La primera línea, '@echo off', evita que el archivo por lotes muestre los comandos a medida que se ejecutan.
Simplemente se informa al usuario que el primer programa se está iniciando mediante la segunda línea, que es 'echo Iniciando el primer programa'.
La tercera línea, “START /B /WAIT notepad.exe”, abre el programa Bloc de notas en una ventana en segundo plano y espera a que finalice antes de continuar. El modificador “/B” le indica al comando INICIO que ejecute el programa en una ventana en segundo plano, y el modificador “/WAIT” le indica al comando INICIO que espere a que el programa finalice antes de continuar.
La cuarta línea lee el eco del Bloc de notas. Cuando el Bloc de notas se abre correctamente en segundo plano, simplemente notifica al usuario con un mensaje.
La quinta línea, 'echo Iniciando el segundo programa', simplemente muestra un mensaje al usuario de que se está iniciando el segundo programa.
La sexta línea, “INICIAR /WAIT mspaint.exe”, abre el programa Paint en una ventana en segundo plano y no espera a que finalice antes de continuar.
La séptima línea, 'echo The Paint se abrió correctamente', simplemente muestra un mensaje al usuario de que Paint se ha abierto correctamente.
La octava línea, 'cmd /k', abre una nueva ventana del símbolo del sistema y mantiene abierta la ventana del símbolo del sistema actual.
Usar un bucle para retrasos personalizados
Podemos utilizar un bucle para retrasos personalizados en el proceso por lotes. Aquí hay un ejemplo:
En este ejemplo, el primer mensaje se muestra al usuario cuando se ejecuta este archivo por lotes. El primer mensaje se muestra una vez más una vez que comienza el ciclo 'for'. El comando de tiempo de espera detiene el archivo por lotes durante un segundo antes de mostrar el segundo mensaje. Luego se muestra el mensaje final después de un total de 10 iteraciones.
@eco apagadoecho Demostración de retardo usando Loop
para /l %%i en (1,1,10) hacer (
tiempo de espera /t 1 /nobreak > nulo
echo Este mensaje se muestra después de %%i segundo(s)
)
echo Este mensaje mostró un retraso de 10 segundos.
Uso del tiempo de espera para el retraso
El comando de tiempo de espera de un archivo por lotes detiene la ejecución del archivo por lotes durante un número predeterminado de segundos. La sintaxis se proporciona aquí:
tiempo de espera /tEl interruptor “/t” especifica la cantidad de tiempo en segundos que se debe esperar. El interruptor “/nobreak” desactiva las pulsaciones de teclas por parte del usuario para romper el retraso.
El comando 'tiempo de espera' se puede utilizar para:
- Posponer la ejecución de un archivo por lotes durante un período de tiempo predeterminado
- Evitar que el usuario interrumpa una acción de archivo por lotes
- Cree una experiencia más fácil de usar evitando que el usuario tenga que presionar una tecla para continuar
Por ejemplo, el siguiente archivo por lotes se detiene durante 10 segundos:
@eco apagadoecho Hola, la ejecución del script continúa después de 10 segundos de retraso
tiempo de espera /t 10
eco ¡Gracias!
Como se demuestra en la siguiente captura de pantalla, se está ejecutando un temporizador y esperando que el usuario interrumpa el comando de 'tiempo de espera' presionando cualquier tecla. Si el usuario presiona cualquier tecla, el proceso se detiene y pasa al siguiente comando en el archivo por lotes:
El usuario en la siguiente captura de pantalla interrumpe el comando de 'tiempo de espera' después de 5 segundos, lo que genera el mensaje '¡Gracias!' mensaje:
La siguiente captura de pantalla muestra cómo el mensaje '¡Gracias!' El mensaje tarda 10 segundos en imprimirse en la pantalla si el usuario final no interrumpe la instrucción de tiempo de espera:
Aquí está el código actualizado que se ha modificado para incluir el interruptor sin interrupción que impide que el usuario final interrumpa un proceso de archivo por lotes:
@eco apagadorem Este archivo por lotes se detiene durante 10 segundos
echo Hola, la ejecución del script continúa después de 10 segundos de retraso
tiempo de espera /t 10 /nobreak
rem Después de 10 segundos, este comando se mostrará en la pantalla de aviso
eco ¡Gracias!
Aquí está el resultado del código anterior:
La línea de comando solicita al usuario que escriba Y o N si el usuario usa el comando 'CTRL+C'. Si el usuario hace clic en Y, este trabajo por lotes se detiene:
Los comandos 'pausa', 'espera' y 'tiempo de espera' son las formas de controlar el flujo de nuestros scripts. La ejecución del script se suspende cuando se utiliza el comando 'pausa' y se detiene durante un período de tiempo predeterminado cuando se utiliza el comando 'tiempo de espera'.
Uso de declaraciones condicionales para el control de flujo
Las declaraciones condicionales son la técnica más comúnmente viable que se emplea para modificar el flujo de un guión en función de una determinada circunstancia. Según si una condición es verdadera o falsa, la declaración 'si' realiza una de dos piezas de ejecución de código. La declaración 'si' está estructurada de la siguiente manera:
siEjemplo:
Abra el Bloc de notas o cualquier editor de texto de su elección y escriba el siguiente código que inicializa el valor de la variable inputValue en 1 en la tercera línea. Luego, el valor de la variable inputValue se verifica usando una declaración 'if' en tiempo de ejecución para ver si es igual a 1, 2 o 3. Si es así, se imprime el mensaje apropiado en la pantalla de línea de comando. Si no es así, se muestra el mensaje final. En una declaración condicional conocida como 'si', se verifica el valor de entrada de una variable para ver si es igual a 1, 2 o 3. Si es así, se ejecuta uno de los dos bloques de código. Si la condición es verdadera, el enunciado condicional no hace nada.
@eco apagadorem Este script prueba la variable inputValue con los valores 1, 2 y 3.
establecer valor de entrada = 1
si '%inputValue%'=='1' (
echo El valor de entrada es igual a 1.
) en caso contrario '%inputValue%'=='2' (
echo El valor de entrada es igual a 2.
) en caso contrario '%inputValue%'=='3' (
echo El valor de entrada es igual a 3.
) demás (
echo La variable inputValue no es igual a 1, 2 o 3.
)
Producción:
Conclusión
Se puede controlar el flujo de secuencias de comandos y se pueden automatizar los procesos en el sistema operativo Windows mediante comandos, bucles y declaraciones condicionales como 'if'. Los desarrolladores pueden detener la ejecución de un script o agregar retrasos con el comando 'pausar' utilizando 'tiempo de espera' o 'ping'. Aunque no hay una declaración de 'cambio' incorporada en las secuencias de comandos por lotes, podemos simularla con expresiones 'si' y 'si no'. Las pruebas son cruciales para garantizar que estos scripts funcionen según lo previsto en el contexto apropiado. Estos scripts son útiles para la automatización, la gestión de sistemas y la manipulación de archivos.