Hola a
tod@s, hoy les traigo algo simple pero que resuelve algunos problemas de higiene
de sistemas de archivos.
El
requerimiento es como sigue : existe una carpeta llamada “Estados de cuenta”,
el nombre es suficientemente descriptivo, el caso es que los usuarios generan
allí archivos en pdf que se almacenan en subcarpetas que llevan como parte del
nombre la fecha del día en que son generados, pero que luego de algún tiempo
pierden validez pues los datos ya no son representativos del presente, ese
período suele ser de 2 días (48 horas) luego de lo cual se convierten en “basura”
y deben ser eliminados, aparte hay aplicaciones que utilizan archivos
temporales que se guardan en la carpeta c:\temporal otro nombre muy sugerente y por alguna razón
que desconozco los creadores de dicha aplicación no eliminan su basura, que
queda en forma de archivos que comienzan con la cadena de caracteres _7 luego sigue una serie de 7 caracteres y la
terminación puede ser 7z, dbf, pdf, xls, xlsx.
Su misión
si deciden aceptarla es crear un proceso automático para eliminar dichos
archivos.
Lo más
simple es crear un proceso por lotes que ejecute comandos para realizar dicha
tarea y luego programar una tarea automática en el servidor para que se ejecute
todos los días a una hora fija.
Lo de crear
la tarea se hace con el task scheduler
Y no
entraré en ese punto, así que vamos al procesamiento por lotes
@echo off
rem *Establecer la Ruta de todos los usuarios
rem ** Primero se borran los archivos de
todas las subcarpetas
ForFiles /P
"C:\Estados de cuenta" /S /D -3 /C "cmd /c del /q @path"
El parámetro
/P dice que lo que viene a continuación es una ruta con la cual se va a
trabajar, luego el parámetro /S le indica al sistema operativo que incluya las
subcarpetas que existan, el parámetro /D le indica al sistema operativo que
debe tomar únicamente aquellos archivos que tengan una antigüedad con el
siguiente parámetro (-3) hace 3 días, osea, los que tengan más de 48 horas, el
parámetro /C le indica que lo que viene a continuación es un comando (del) que en efecto borra todo lo que esté en
la ruta @Path que se fijó al principio con /P y finalmente el parámetro /q que
indica que no pregunte si estás seguro que lo haga en modo silencioso.
rem ** Luego se borran todas las subcarpetas
forfiles /s
/d -3 /p "C:\Estados de cuenta" /c "cmd /c IF @isdir == TRUE rd
/s /q @path"
Aquí la
única diferencia es que se hace la pregunta si el archivo tratado es una
carpeta @isdir, en cuyo caso se ejecuta el commando rd (remove directory), que en efecto borra las
subcarpetas que existan.
Si quisiéramos
borrar carpetas que se encuentran en el escritorio de algún usuario en
particular, la sintaxis sería como la siguiente, ojo que aquí se usan una
variable llamada RUTA que se le asigna un valor con el comando SET; y que para
utilizarla la ponemos entre signos de porcentaje %RUTA%
SET
RUTA=C:\Users\TELEFONICO\Desktop\Estados de Cuenta
ForFiles /P
"%RUTA%" /S /D -3 /C "cmd /c del /q @path"
rem ** Luego se borran todas las subcarpetas
con 3 o mas dias de antiguedad
forfiles /s /d -3 /p "%RUTA%" /c "cmd /c IF @isdir == TRUE rd /s /q @path"
SET RUTA=C:\Users\CENTRO\Desktop\Estados
de Cuenta
ForFiles /P
"%RUTA%" /S /D -3 /C "cmd /c del /q @path"
rem ** Luego se borran todas las subcarpetas
con 3 o mas dias de antiguedad
forfiles /s /d -3 /p "%RUTA%" /c "cmd /c IF @isdir == TRUE rd /s /q @path"
rem ** se aprovecha la funcionalidad para
borrar los respaldos que quedan
rem ** almacenados en el servidor, dado que
ya se subieron a DropBox, para liberar espacio
rem ** y también se borran los archivos
temporales que deja foxpro, todo con 2 días de antiguedad
rem *Establecer la Ruta de los respaldos
diarios
rem ** Primero se borran los archivos .7z que
tengan más de 2 días de antiguedad, no borrar los de hoy ni ayer
ForFiles /P
"C:\Temporal\Datos" /m *.7z /D -2 /C "cmd /c del /q @path"
La novedad
aquí es el parámetro /m que le dice al
sistema operativo que solo afecte aquellos archivos que cumplen con una mascara
(por eso la m) que tengan la extensión
7z
rem ** Luego se borran los archivos
temporales _7*.dbf y pdf
del
C:\Temporal\_7*.dbf C:\Temporal\_7*.pdf C:\Temporal\_7*.xls
C:\Temporal\_7*.xlsx C:\Temporal\_7*.idx
Espero les
sirva como orientación si se enfrentan a esta tarea, que es relativamente
simple si se sabe como realizarla, me despido no sin antes felicitar a mi
hermana Teresita y su esposo Alex que cumplen años el mismo día, eso fue hace
unos días este Enero.

No hay comentarios:
Publicar un comentario