Procesar varios archivos por línea de comandos en Windows

Para aplicar un cierto acción a varios archivos desde la línea de comandos de Windows existe la instrucción forfiles.

En Windows 7, la invocación tiene los siguientes parámetros (todos son opcionales):

  • /P <PATH>: ruta sobre la cual buscar los archivos
    • Si no se especifica, se considera el directorio actual
  • /S: se procesan los subdirectorios del path recursivamente
  • /M <PATRON>: patrón de los archivos a considerar, pudiendo indicar nombre y extensión. Por ej: *.log
    • Si no se especifica, se considera *
  • /D  { [+] | – }{ dd/mm/aaaa | N }: selecciona archivos a partir de la fecha de última modificación de cada uno.
    • Si no se especifica el signo -, se considera por defecto +
    • -dd/mm/aaaa: fecha de última modificación anterior o igual a dd/mm/aaaa
    • +dd/mm/aaaa: fecha de última modificación posterior o igual a dd/mm/aaaa
    • -N: fecha de última modificación anterior o igual a la fecha actual menos N días
    • +N: fecha de última modificación posterior o igual a la fecha actual más N días
  • /C “<COMANDO>”: indica la acción a ejecutar sobre cada uno de los archivos que hayan sido seleccionados
    • Si no se especifica, se considera “cmd /c echo @file”
    • Si se desea utilizar un comando de CMD, deben estar precedidos por “cmd /c”
    • Variables disponibles en <COMANDO>
      • @file: nombre del archivo
      • @fname: nombre de archivo sin extensión
      • @ext: extensión del archivo
      • @path: ruta de acceso completa al archivo
      • @relpath: ruta de acceso relativa del archivo
      • @isdir: “TRUE” si es un directorio y “FALSE” si es un archivo
      • @fsize: tamaño del archivo en bytes
      • @fdate: última fecha de modificación del archivo
      • @ftime: última hora de modificación del archivo

 

Ejemplos:

forfiles /P C:\logs /D -20 /C "cmd /c del @path"

Borra los archivos del directorio logs de más 20 días desde su última fecha de modificación

forfiles /C "cmd /c if @isdir==TRUE echo @file"

Imprime por pantalla los directorios que se encuentren en la ruta actual

forfiles /P C:\Documents\ /S /M *.xlsx /C "cmd /c echo @fname - @fdate"

Muestra el nombre y fecha de última modificación de cada uno de los archivos de Excel dentro del directorio de documentos (y subdirectorios)

Tagged with:
Publicado en Windows