El comando FORFILES permite seleccionar un conjunto de ficheros en base a ciertos criterios, de tal modo, que para cada fichero seleccionado podemos ejecutar un comando, algo de gran utilidad para preparar de forma rápida sencillos scripts de borrado de ficheros antiguos, archivado, etc. A continuación podemos ver algunos de sus parámetros:
- /p Path Permite especificar la ruta sobre la que se desean buscar los ficheros (por defecto será la ruta actual)
- /m SrchMask Permite especificar una máscara para buscar los ficheros deseados.
- /s Permite especificar que deseamos que se realice una búsqueda recursiva a través de las subcarpetas.
- /C command Permite especificar el comando que deseamos ejecutar para cada fichero seleccionado, que por defecto será "cmd /c echo @file"
- /D –dd Permite seleccionar los ficheros que tienen una fecha de modificar menor o igual a un determinado número de días.
Adicionalmente, en el comando que ejecutemos para cada fichero, tenemos la posibilidad de utilizar algunas variables como las siguientes:
- @file Devuelve el nombre del fichero.
- @fname Devuelve el nombre del fichero, sin extensión.
- @ext Devuelve sólo la extensión del fichero.
- @path Devuelve el nombre completo del fichero (incluyendo la ruta completa del directorio en el que se encuentra).
- @relpath Devuelve la ruta relativa del fichero.
- @isdir Devuelve "TRUE" si se trata de un directorio y "FALSE" en caso contrario.
- @fsize Devuelve el tamaño del fichero en Bytes.
- @fdate Devuelve la fecha de modificación del fichero.
- @ftime Devuelve la hora de modificación del fichero.
En el siguiente ejemplo, podemos ver cómo utilizar el comando FORFILES junto con variables de sustitución de MSDOS, para mostrar por pantalla (utilizando ECHO) un conjunto de ficheros, ubicados en cierta ruta, que cumplen un determinado patrón, y que son más antiguos de N días.
El motivo de utilizar un ECHO es para facilitar la depuración, ya que así podremos comprobar que estamos seleccionando los ficheros deseados. Así, ejecutando el Script anterior, podremos comprobar que las variables de sustitución y la ejecución completa del FORFILES, es correcta.
Ahora podemos dar un paso más, por ejemplo, vamos a especificar como comando a ejecutar, el borrado de los ficheros seleccionados. Este es un caso muy típico de borrado de ficheros antiguos.
Al ejecutarlo, no vemos cuales han sido los ficheros afectados, pero por lo contrario, sí que observamos que la ejecución se ha producido sin errores.
Si volvemos a ejecutar el mismo script, dado que los ficheros ya han sido borrados y no queda ningún fichero que cumpla nuestros criterios de selección, la ejecución mostrará un error informado que no hay ningún fichero afectado en esta ejecución.
Sin duda, FORFILES es un comando que nos puede ser de utilidad desarrollar de forma rápida pequeños scripts de MSDOS que nos ayuden en nuestras tareas administrativas.
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.