forfiles

Selecciona y ejecuta un comando en un archivo o conjunto de archivos. Este comando se usa con más frecuencia en archivos por lotes.

Sintaxis

forfiles [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] [{<date> | <days>}]]

Parámetros

Parámetro Descripción
/P <pathname> Especifica la ruta de acceso desde la que se va a iniciar la búsqueda. De forma predeterminada, la búsqueda comienza en el directorio de trabajo actual.
/M <searchmask> Busca archivos según la máscara de búsqueda especificada. La máscara de búsqueda predeterminada es *.
/S Indica al comando forfiles que busque en subdirectorios de forma recursiva.
/C <command> Ejecuta el comando especificado en cada archivo. Las cadenas de comandos se deben encapsular entre comillas dobles. El comando predeterminado es "cmd /c echo @file".
/D [{+\|-}][{<date> | <days>}] Selecciona los archivos con una fecha de última modificación dentro del período de tiempo especificado:
  • Selecciona los archivos con una fecha de última modificación posterior o igual a (+) o anterior o igual a (-) la fecha especificada, donde la fecha está en el formato MM/DD/AAAA.
  • Selecciona los archivos con una fecha de última modificación posterior o igual a (+) la fecha actual más el número de días especificados, o anterior o igual a (-) la fecha actual menos el número de días especificados.
  • Los valores válidos para días incluyen cualquier número en el intervalo de 0 a 32 768. Si no se especifica ningún signo, se utiliza por defecto +.
/? Muestra el texto de ayuda en la ventana cmd.

Comentarios

  • El comando forfiles /S es similar a dir /S.

  • Puede usar las siguientes variables en la cadena de comandos según lo especificado por la opción de línea de comandos /C:

    Variable Descripción
    @FILE Nombre de archivo.
    @FNAME Nombre de archivo sin extensión
    @EXT Extensión de nombre de archivo
    @PATH Ruta de acceso completa del archivo
    @RELPATH Ruta de acceso relativa del archivo
    @ISDIR Se evalúa como TRUE si un tipo de archivo es un directorio. De lo contrario, esta variable se evalúa como FALSE.
    @FSIZE Tamaño del archivo, en bytes.
    @FDATE Marca de fecha de última modificación en el archivo.
    @FTIME Marca de hora de la última modificación en el archivo.
  • El comando forfiles permite ejecutar un comando en varios archivos o pasar argumentos. Por ejemplo, puede ejecutar el comando type en todos los archivos de un árbol con la extensión de nombre de archivo .txt. O bien, puede ejecutar todos los archivos por lotes (*.bat) en la unidad C, con el nombre de archivo Myinput.txt como primer argumento.

  • Este comando puede hacer lo siguiente:

    • Seleccionar los archivos por una fecha absoluta o una fecha relativa mediante el parámetro /d.

    • Compilar un árbol de archivos mediante variables como @FSIZE y @FDATE.

    • Diferenciar los archivos de los directorios mediante la variable @ISDIR.

    • Incluir caracteres especiales en la línea de comandos mediante el código hexadecimal para el carácter, en formato 0xHH (por ejemplo, 0x09 para una pestaña).

  • Este comando funciona mediante la implementación de la marca recurse subdirectories en herramientas diseñadas para procesar solo un único archivo.

Ejemplos

Para enumerar todos los archivos por lotes de la unidad C, escriba:

forfiles /P c:\ /S /M *.bat /C "cmd /c echo @file is a batch file"

Para enumerar todos los directorios de la unidad C, escriba:

forfiles /P c:\ /S /M * /C "cmd /c if @isdir==TRUE echo @file is a directory"

Para enumerar todos los archivos del directorio actual que tienen al menos un año de antigüedad, escriba:

forfiles /S /M *.* /D -365 /C "cmd /c echo @file is at least one year old."

Para mostrar el archivo de texto que está obsoleto para cada uno de los archivos del directorio actual que son anteriores al 1 de enero de 2007, escriba:

forfiles /S /M *.* /D -01/01/2007 /C "cmd /c echo @file is outdated."

Para enumerar las extensiones de nombre de archivo de todos los archivos del directorio actual en formato de columna y agregar una pestaña antes de la extensión, escriba:

forfiles /S /M *.* /C "cmd /c echo The extension of @file is 0x09@ext"