Al que le tocó alguna vez configurar/administrar un servidor de impresoras en Windows, se habrá dado cuenta que si queremos conservar el documento después de su impresión, no podemos definir por cuanto tiempo mantener dicha copia. Es por eso, y a falta de un disco de espacio infinito, que surgió la necesidad de eliminar de manera automática estos archivos, mediante un script externo a la configuración del sistema de impresión. Este script básicamente deberá eliminar los archivos del directorio en donde el sistema operativo guarda los documentos de la cola de impresión.

Pero como sabemos, siempre que necesitamos automatizar alguna tarea en entornos MS Windows, tenemos grandes limitaciones para con los scripts que podemos generar, aunque esta vez, y totalmente sorprendido, encontramos un comando que nos va a facilitar las cosas, el forfiles.

Forfiles es un selector de archivos que permite ejecutar un comando para cada uno de los resultantes después de establecer un filtro.

Sintaxis:

FORFILES [/p Path] [/m Mask] [/s] [/c Command] [/d [+ | -] {dd/MM/yyyy | dd}]   

Parámetros:

/p Path      Path donde realizar la búsqueda  (por default en el directorio actual)

/s           Recorre subdirectorios

/C commando  El comando a ejecutar en cada archivo.
                Por default es "cmd /c echo @file"

Las siguientes variables pueden ser utilizadas en el comando:

      @file    Nombre del archivo.
      @fname   Nombre del archivo sin la extensión.                
      @ext     Extensión del archivo.                  
      @path    Nombre completo, incluyendo path, del archivo.
      @relpath Path relativo al archivo.          
      @isdir   Retorna "TRUE" si el objeto es de tipo directorio,
               y "FALSE" para archivos.
      @fsize   Tamaño del archivo en bytes.
      @fdate   Fecha de última modificación del archivo.
      @ftime   Hora de  última modificación del archivo.
/D fecha    Permite seleccionar archivos dependiendo la fecha de modificación, 
            con  el parámetro + o - para valores superiores o inferiores a dicha 
            fecha. Se debe usar el formato "dd/MM/yyyy".

/D + dd     Selecciona archivos que fueron modificados hace menos de los 
            días indicados en dd.

/D - dd     Selecciona los archivos que fueron modificados hace mas días
            que los que indica el parámetro dd.

Por consiguiente, el comando para eliminar los documentos con mas de 5 días guardados, quedaría de la siguiente manera:

forfiles /p c:\windows\system32\spool\PRINTERS /d -5 /c "cmd /c del @path"

donde:

/p indica el directorio donde se almacenan los documentos impresos.
/d la cantidad de dias a conservar.
/c el comando para eliminar los archivos (@path) que superan dicha cantidad de dias (indicados en el parámetro /d)

Por último, para automatizar esta tarea, lo que nos queda es agregar el comando en el administrador de tareas programadas para que se ejecute una vez por día.

tareasProgramadas