DOS Batch

Bucle en un bat (proceso por lotes)

En Windows por trellat0 Comentarios

En los ficheros de proceso por lotes de MS-DOS/Windows, no hay implementada ninguna instrucción para hacer bucles en sí. Pero aprovechando los saltos a etiquetas, se puede hacer un bucle en un bat de manera sencilla, simulando el comportamiento de un while o un for de otros lenguajes de programación.

Para empezar, un breve repaso de las instrucciones utilizadas:

  • rem – Se utiliza para escribir comentarios para ayudar a entender el código. Lo que se ponga en esa línea después de rem, no se ejecutará.
  • set – Establece un valor para una variable. La sintaxis es: set <variable> = <valor>
  • echo – Muestra en la consola el texto que se escriba a continuación. En el caso de querer mostrar el valor de una variables, se pondrá el nombre de la variable entre porcentajes (%<variable>%).
  • goto – Salta la ejecución a la línea donde se encuentre la etiqueta especificada. Los nombres de las etiquetas siempre van precedidas de dos puntos (:etiqueta).

Con estas instrucciones básicas, ya se puede implementar un bucle en un bat de la forma que se muestra a continuación, el cual se correspondería con un while de otros lenguajes de programación.

rem : Ejemplo de un loop WHILE
rem : ================================

rem : Seteos iniciales.
set x = 1
rem : Inicio del bloque while.
:while
if %x% &lt; 5 (
rem : {
echo %x%
set x = x + 1
rem : }

rem : Vuelta al comienzo del bucle
goto :while
)

Se observa que lo primero que se hace es definir la variable que cuenta el número de ejecución del bucle (x), la cual se inicializa a 1.

A continuación se define la etiqueta :while, que es donde comienza realmente el bucle en un bat. Lo siguiente es comprobar si se cumple la condición que decide si debe ejecutarse una vez más las instrucciones del bloque while. En este ejemplo, se ejecutará siempre que la variable x valga menos de 5.

Una vez dentro del bucle, se ejecutan las instrucciones que deben repetirse cada vez que entre en el bucle. En este ejemplo simplemente muestra el valor actual de la variable x, mediante un echo.

Por último, se actualiza el valor de x incrementándolo en 1 y se retorna a la línea de la etiqueta :while. Por tanto, se volverá a ejecutar hasta que x valga 5 y, por lo tanto, ya no cumpla la condición. La salida sería: 1 2 3 4.

Otro ejemplo de bucle, implementado de forma similar, podría ser el siguiente, el cual simula el comportamiento de un bloque do-while. La diferencia con el anterior es que la condición se comprueba al final del bucle, por lo que éste se ejecutará como mínimo una vez y se volverá a ejecutar siempre y cuando se siga cumpliendo la condición. El anterior sólo se ejecutará si se cumple la condición, por lo que se puede dar el caso que nunca se ejecute el código de su interior.

rem : Ejemplo de un loop DO-WHILE
rem : ================================

rem : Seteos iniciales.
set x = 1
rem : comienzo del bloque do-while.
:do_while
rem : {
echo %x%
set x = x +1
rem : }

rem : Comprobación de la condición y salto al comienzo del bucle si procede.
if %x% &lt; 5 (goto :do_while)

Deja un comentario