Comandos de pausa y espera de archivos por lotes: cómo controlar el flujo de sus scripts

Comandos De Pausa Y Espera De Archivos Por Lotes Como Controlar El Flujo De Sus Scripts



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!





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 apagado

echo 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 apagado

echo 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 /t [/nobreak]

El 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 apagado

echo 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 apagado

rem 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:

si si no

Ejemplo:

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 apagado

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