Entonces, en el trabajo de hacer copias de seguridad, necesito un script por lotes que me permita eliminar archivos en un directorio específico, que son más antiguos que digamos, 3 días. Este script se configurará como una tarea programada para ejecutarse a una hora específica todos los días.
windows-server-2008-r2
batch-file
Chiggins
fuente
fuente
Respuestas:
Si powershell es aceptable (debería estarlo, ya que está habilitado de forma predeterminada en Server 2008+) intente esto:
Souce aquí .
fuente
Remove-Item $File -whatif | out-null
. Para ejecutarse como una tarea programada, el trabajo debe especificar la ruta completa a powershell.exe con su script nombrado como argumento.¿Dónde
-5
está la antigüedad de los archivos que desea eliminar (5 días o más en este caso)? Este script está eliminando.rar
archivos; suelte el-m *.rar
si desea eliminar cualquier tipo de archivo.fuente
Si insiste en usar archivos por lotes, Robocopy.exe es su respuesta. Es rápido (multiproceso) y muy robusto. Para su escenario, puede usar lo siguiente como guía:
Hay una larga lista de opciones, robocopy /? para verlos a todos. Incluso puede usarlo para hacer copias de seguridad incrementales, programar, crear perfiles de copia de seguridad, etc.
fuente
Me gusta usar DelEn.exe para esto.
Delen - DELete ENhanced - es una versión mejorada de DEL. Admite comodines extendidos y directorios principales, así como filtros de fecha, hora y tamaño. Los archivos se pueden excluir de la eliminación.
fuente
Puede mirar DelAge32 de Horst Schaeffer:
http://home.mnet-online.de/horst.muc/wbat32.htm#top
Su comando puede ser tan simple como:
Tengo este comando ejecutándose como una tarea programada.
fuente
Este es un script de PowerShell que escribí para hacer lo que quieres, también hace un poco más. Lo uso para borrar registros y otros archivos temporales.
purge-dem-logs.cmd
purgelogs.ps1:
fuente
Esto no funcionará para computadoras remotas. Los administradores deben administrar varias computadoras. A continuación se muestra el script que se puede usar para eliminar carpetas en varias computadoras remotas sin tener que iniciar sesión en ellas.
El siguiente script eliminará las carpetas con más de 15 días de antigüedad. Sin embargo, puede cambiar el parámetro $ días.
D $ \ Archivos de programa (x86) \ Research In Motion \ BlackBerry Enterprise Server \ Logs es la ruta UNC para la carpeta Blackberry Log. Puede cambiar el directorio donde se encuentran sus registros / carpetas.
Enumere todos los nombres de sus servidores en el archivo server.txt y debe ubicarse en el mismo directorio que este script.
Guarde el script como .ps1 y ejecútelo. Puede programarlo a través de un archivo por lotes. De esa manera, debe agregar el comando Cambiar directorio al comienzo del script.
Que te diviertas.
fuente
Como un enfoque alternativo: en lugar de confiar en consultar el sistema de archivos para obtener tiempos de creación de archivos (y presionar los mismos archivos durante varios días, hasta que caduquen), puede agregar el archivo a un índice propio en el momento de la creación. El índice podría ser tan simple como un archivo con el nombre de la fecha de creación, almacenado en una ubicación conocida, con un archivo por línea.
Si tiene una aplicación multiproceso / multiproceso que crea archivos, es posible que desee que su índice se maneje de una manera más sofisticada.
La ventaja sería que siempre tiene una lista de archivos procesada de manera relativamente simple creada en un día determinado que puede repetir, en lugar de tener que pedirle al sistema de archivos una y otra vez los detalles.
(Esto dependería de que la aplicación y la creación de archivos sean administradas por usted y no por un tercero).
fuente