Bucles FOR con batch
Los bucles for
en Batch son una herramienta poderosa para automatizar tareas repetitivas en sistemas Windows. A continuación, vamos a ver cómo funcionan, sus diferentes variantes y algunos ejemplos prácticos para que puedas utilizarlos eficazmente en tus scripts.
Sintaxis Básica del Bucle for
for
El comando for
en Batch permite iterar sobre una serie de elementos, como archivos, cadenas de texto o resultados de comandos. La sintaxis general es la siguiente:
Notas Importantes:
%%variable
: En scripts Batch, las variables dentro de los buclesfor
se representan con doble porcentaje (%%
). Si ejecutas el comando directamente en la línea de comandos (CMD), usarías un solo%
.conjunto_de_elementos
: Puede ser una lista de archivos, números, palabras, etc.comando
: La acción que deseas realizar en cada iteración.
Tipos de Bucles for
en Batch
for
en BatchBucle for
Básico (Iterar sobre archivos o elementos)
for
Básico (Iterar sobre archivos o elementos)Este tipo de bucle es útil para procesar una lista de archivos o elementos especificados.
Ejemplo: Iterar sobre archivos .txt
en un directorio
Explicación:
%%f
: Variable que representa cada archivo.txt
encontrado en el directorio actual.*.txt
: Patrón que coincide con todos los archivos con extensión.txt
.echo Procesando el archivo %%f
: Muestra un mensaje por cada archivo procesado.
Bucle for /f
(Iterar sobre líneas de un archivo o salida de un comando)
for /f
(Iterar sobre líneas de un archivo o salida de un comando)La opción /f
permite procesar el contenido de archivos, cadenas de texto o la salida de comandos.
Sintaxis:
Ejemplo: Leer y mostrar cada línea de un archivo de texto
Explicación:
"tokens=*"
: Indica que se debe leer la línea completa sin dividirla en tokens.%%l
: Variable que representa cada línea leída del archivoarchivo.txt
.echo Línea leída: %%l
: Muestra cada línea del archivo.
Ejemplo: Iterar sobre la salida de un comando
Explicación:
'dir /b *.txt'
: Comando cuyo resultado será iterado.dir /b
lista los archivos en formato sencillo.%%i
: Variable que representa cada archivo listado por el comandodir
.echo Archivo encontrado: %%i
: Muestra cada archivo encontrado.
Bucle for /l
(Iterar sobre un rango de números)
for /l
(Iterar sobre un rango de números)La opción /l
permite iterar sobre un rango de números especificando un inicio, un incremento y un fin.
Sintaxis:
Ejemplo: Contar del 1 al 5
Explicación:
(1,1,5)
: Inicia en 1, incrementa de 1 en 1, hasta llegar a 5.%%i
: Variable que representa el valor actual del contador.echo Contador: %%i
: Muestra el valor del contador en cada iteración.
Bucle for /d
(Iterar sobre directorios)
for /d
(Iterar sobre directorios)La opción /d
permite iterar exclusivamente sobre directorios en lugar de archivos.
Ejemplo: Listar todos los subdirectorios en el directorio actual
Explicación:
%%d
: Variable que representa cada subdirectorio encontrado.(*)
: Patrón que coincide con todos los directorios en el directorio actual.echo Directorio encontrado: %%d
: Muestra cada directorio encontrado.
Modificadores de Variables
Dentro de los bucles for
, puedes usar modificadores para obtener partes específicas de las variables. Algunos de los más comunes son:
%%~nF
: Nombre del archivo sin la extensión.%%~xF
: Extensión del archivo.%%~dpF
: Ruta completa del archivo.%%~fF
: Ruta completa y nombre del archivo.
Ejemplo: Renombrar archivos añadiendo un prefijo
Explicación:
%prefix%
: Variable que contiene el prefijo a añadir.%%~nxf
: Nombre y extensión del archivo actual.REN "%%f" "%prefix%%%~nxf"
: Renombra cada archivo añadiendo el prefijo definido.
Usos prácticos de bucle FOR
Ejemplo 1: Crear archivos con un rango de números en el nombre
Si deseas crear archivos llamados archivo1.txt
, archivo2.txt
, ..., archivo10.txt
, puedes usar el bucle FOR /L
para iterar sobre un rango numérico.
Explicación:
/L
: Itera sobre un rango de números.(1,1,10)
: Empieza en 1, incrementa de 1 en 1, hasta llegar a 10.echo Este es el contenido del archivo %%i > archivo%%i.txt
: Crea un archivo llamadoarchivo%%i.txt
con contenido específico.archivo%%i.txt
: Los nombres de los archivos tendrán números iterativos (archivo1.txt
,archivo2.txt
, ...).
Ejemplo 2: Crear archivos con nombres personalizados
Si necesitas usar una lista de nombres específicos, puedes usar un bucle FOR
con un conjunto de valores predefinidos.
Explicación:
(rojo verde azul amarillo)
: Lista de valores que serán iterados.%%i
: Representa cada valor de la lista.echo Este es el archivo %%i > %%i.txt
: Crea un archivo con el nombre basado en cada valor de la lista (rojo.txt
,verde.txt
, etc.).
Ejemplo 3: Crear archivos con prefijo y números
Si deseas combinar un prefijo con números, puedes definir un prefijo como variable.
Explicación:
SET prefix=Reporte_
: Define un prefijo para los nombres de los archivos.%prefix%%%i.txt
: Combina el prefijo con el número iterativo (Reporte_1.txt
,Reporte_2.txt
, etc.).
Ejemplo 4: Crear archivos en diferentes carpetas
Puedes usar el bucle FOR
para crear archivos dentro de subdirectorios.
Explicación:
/D
: Itera sobre directorios en lugar de archivos.%%i\archivo.txt
: Crea un archivo llamadoarchivo.txt
dentro de cada subdirectorio encontrado.
Ejemplo 5: Crear archivos con nombres basados en la fecha actual
Si quieres nombres únicos basados en la fecha y hora, puedes usar variables de entorno.
Explicación:
%date%
y%time%
: Variables de entorno que contienen la fecha y hora actuales.!fecha!
y!hora!
: Variables con expansión retrasada (SETLOCAL ENABLEDELAYEDEXPANSION
).archivo_%%i_!fecha!-!hora!.txt
: Crea archivos con nombres únicos comoarchivo_1_2024-11-15-10-30.txt
.
Última actualización