Cómo utilizar el archivo por lotes For Loop en Windows

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

Artículos más recientes