No hay forma de confiar en las fechas para cuando un archivo fue copiado o movido a una carpeta. Windows logra preservarlo en sistemas de archivos, unidades, recursos compartidos de red, etc. Es posible que pueda resolver algo con un servidor de archivos de Linux, o evitar que las personas copien directamente archivos mediante FTP o un sistema de carga basado en la web.
Si está de acuerdo con que las personas no puedan modificar los archivos después de que se carguen, podría tener carpetas de carga y acceso separadas, y un script que mueva los archivos entre ellas y las vuelva a actualizar. Pero parece que quiere que las personas puedan modificar los archivos directamente.
Por lo tanto, una solución simple, aunque un tanto extravagante, sería meterse con las fechas. Escribiría dos guiones:
Script de cambio de fecha por hora
Haga que se ejecute una secuencia de comandos una vez cada hora, en su idioma preferido, que:
- Busca cualquier archivo con una fecha modificada en los últimos 20 años.
- Cuando encuentre dicho archivo, cambie su fecha de modificación a hoy menos 20 años.
En powershell, se vería así:
$path = "D:\test"
$today = Get-Date
$before = $today.AddDays(-7300) #356*20 days
Get-ChildItem -Recurse -Path $path | foreach {
if ($_.LastWriteTime -gt $before) {
Write-Host $_.Name
$_.LastWriteTime = $before
}
}
Al ejecutar este script hoy (27 de mayo), se establece la fecha de modificación de todos los archivos al 1 de junio de 1994, exactamente hace 356 * 20 días. Debido a que está cambiando solo los archivos más nuevos que el valor $ before, no tocará los archivos que ya ha establecido en el pasado.
Script de limpieza
El script de limpieza se ejecutaría todas las noches y:
- Buscar archivos con fecha de modificación "hace 20 años y X días"
- Borra los
No escribiré el script para esta parte: hay muchas utilidades que pueden manejar la eliminación de archivos que son anteriores a una fecha específica, elija la que desee. La parte importante es buscar archivos que tengan más de 7300 días de antigüedad, donde X es el número de días que desea conservarlos desde la última modificación.
Ventajas
Esto tiene algunas ventajas sobre las otras respuestas aquí:
- El temporizador se reiniciará si alguien modifica el archivo.
- No es necesario que las secuencias alternativas de NTFS marquen los archivos (que se conservan al mover el archivo, por lo que podrían causar la eliminación prematura de un archivo modificado)
- Debería tener un impacto mínimo en el rendimiento. No es necesario mantener una base de datos o una lista de nombres de archivo y / o hashes.
- Nada se rompe horriblemente si los scripts no se ejecutan. No se necesita ningún servicio o programa en ejecución constante para actualizar la fecha. Solo un par de tareas programadas. Las soluciones que dependen de buscar nuevos archivos y actualizar su última hora de modificación en este momento podrían terminar eliminando nuevos archivos si el servicio falla o se encuentra en una condición de carrera.
El único problema que puedo ver es si las personas copian un archivo que se modificó por última vez hace 20 años en la carpeta desplegable. Creo que en la mayoría de los escenarios, es poco probable que sea un gran problema, pero podría surgir.