dimecres, 13 de gener del 2016

Forfiles: ejecutar comandos de Windows sobre varios ficheros seleccionados

Una de las tareas que nos puede tocar hacer como administradores de sistemas Windows es borrar de manera automatizada archivos más antiguos de X tiempo. Por ejemplo, un programa que cree diariamente archivos de registro o logs pesados, que tan solo necesitemos guardarlos durante un tiempo concreto.

Para realizar esta tarea diariamente sin necesidad de programar un script, tenemos el comando forfiles:

forfiles [/p <Path>] [/m <SearchMask>] [/s] [/d [{+ |-}] [{<Date> | <Days>}]] [/ c "<Command>"] 



Éste es el aspecto que tendria el comando si queremos borrar todos los archivos .log de la carpeta c:\logsprogram , cuya fecha de modificación sea mayor de 90 días:

forfiles  /p "c:\logsprogram"  /m *.log  /s  /d -90  /c "cmd /c echo El archivo @PATH modificado el @fdate ha sido borrado & del @PATH" >>del_logs.txt

- El parámetro /s indica que la tarea debe realizarse en todas las subcarpetas de la carpeta indicada
- Con el parámetro /d especificamos una fecha o un número de días a contar desde la fecha actual. En el ejemplo, /d -90 selecciona los archivos cuya fecha de modificación sea anterior o igual a 90 días desde la fecha actual
- Dentro del parámetro /c escribimos el comando a ejecutar con los archivos que se han seleccionado. En ese caso el comando es "del @PATH", donde la variable de entorno @PATH contiene la ruta de cada fichero que selecciona forfiles.
- Con el símbolo "&" podemos concatenar texto con el comando para posteriormente redirigir la salida a un fichero .txt y tener un registro de las acciones que ha realizado forfiles

Este comando lo ejecutamos dentro de un archivo .bat programado en el Task Scheduler, y ya tendremos el borrado automático.

Más información en la página de Microsoft:

https://technet.microsoft.com/es-es/library/cc753551%28v=ws.10%29.aspx

Cap comentari:

Publica un comentari a l'entrada