¿Cómo utilizar el bucle For de archivos por lotes para procesar archivos y carpetas?
Uno de los usos habituales de los archivos por lotes para bucles es procesar archivos y carpetas en bloque. Por ejemplo, puede querer renombrar, borrar o mover un número de ficheros o carpetas siguiendo un patrón específico. Para ello, puede utilizar algunas de las opciones adicionales disponibles para los bucles for, como:
- /F para procesar archivos de texto o resultados de otros comandos.
- /R para procesar subcarpetas de forma recursiva.
- /D para procesar sólo directorios.
A continuación se muestra la sintaxis del archivo por lotes del bucle for con estas opciones adicionales:
FOR /F ["options"] %%parameter IN (set) DO command
Dónde:
- [«opciones»] son opciones adicionales que se pueden utilizar para controlar cómo el bucle for procesa archivos de texto o resultados de comandos. Algunas opciones de uso común son:
FOR /R [[drive:]path] %%parameter IN (set) DO command
Dónde:
- [es el directorio inicial que procesará el bucle. Si no se especifica, se utilizará el directorio actual.
- (conjunto) es el conjunto de archivos que debe procesar el bucle. Este conjunto debe coincidir con un patrón de archivos (file globbing), como *.txt o ?.bat. Si el conjunto está vacío, se procesarán todos los archivos.
FOR /D %%parameter IN (set) DO command
Dónde:
- (set) es el conjunto de directorios a procesar por el bucle. Este conjunto debe ser un patrón de coincidencia de archivos (file globbing), como * o ?. Si el conjunto está vacío, se procesarán todos los directorios.
Ejemplo:
FOR /F "skip=1 delims=," %%A IN (data.csv) DO ECHO %%A
El comando anterior omitirá la primera línea del archivo data.csv, que normalmente contiene los encabezados de las columnas, y mostrará el valor de la primera columna de cada línea posterior, separados por comas.
FOR /F "tokens=1,2* usebackq" %%A IN ("file name.txt") DO ECHO %%A %%B %%C
El comando anterior procesará un archivo de texto cuyo nombre contenga espacios, y mostrará los valores de la primera, segunda y restantes columnas de cada línea, separados por espacios o tabuladores.
FOR /R C:\Users\ %%D IN (*.jpg) DO COPY %%D D:\Backup\
The above command will search for all files with the .jpg extension in the C:\Users\ directory and its subdirectories, and copy them to the D:\Backup directory.
FOR /D %%E IN (*) DO RMDIR /S /Q %%E
El comando anterior borrará todos los directorios y su contenido en el directorio actual.
¿Cómo utilizar Batch File For Loop para acceder a la información de archivos y carpetas?
Además de procesar archivos y carpetas con el archivo por lotes para bucle, también puede acceder a información sobre ellos, como el nombre, la extensión, el tamaño, la fecha de modificación, los atributos y la ruta.
Para ello, puede utilizar modificadores de ruta en las variables de bucle. Un modificador de ruta es un carácter especial que se puede añadir después del signo de porcentaje (%) en una variable de bucle para cambiar el valor de esa variable.
Estas son algunas de las modificaciones de ruta más utilizadas:
- %~fparameter para mostrar la ruta completa de un archivo o carpeta.
- %~nparameter` para mostrar los nombres de archivos o carpetas sin extensiones.
- %~xparameter para mostrar las extensiones de archivos o carpetas.
- %~sparameter para mostrar la ruta corta de un archivo o carpeta, lo que resulta útil si la ruta contiene espacios.
- %~zparameter para mostrar el tamaño del archivo o carpeta en bytes.
- %~tparameter para mostrar la fecha y hora de modificación del archivo o carpeta.
- %~aparameter para mostrar atributos de archivos o carpetas, como R (sólo lectura), H (oculto), S (sistema), etc.
Ejemplo:
FOR %%F IN (*.txt) DO ECHO %%F %%~nF %%~xF %%~sF %%~zF %%~tF %%~aF
El comando anterior mostrará información sobre todos los archivos de texto del directorio actual, como el nombre, la extensión, la ruta corta, el tamaño, la fecha de modificación y los atributos.