Il n'y a aucun moyen de se fier aux dates auxquelles un fichier a été copié ou déplacé dans un dossier. Windows parvient à le conserver sur les systèmes de fichiers, les lecteurs, les partages réseau, etc. Vous pouvez peut-être travailler avec un serveur de fichiers Linux ou empêcher les gens de copier directement des fichiers à l'aide de FTP ou d'un système de téléchargement basé sur le Web.
Si vous êtes d'accord avec les personnes ne pouvant pas modifier les fichiers après leur téléchargement, vous pouvez avoir des dossiers de téléchargement et d'accès séparés, et un script qui déplace les fichiers entre eux et les remodèle. Mais il semble que vous souhaitiez que les utilisateurs puissent modifier directement les fichiers.
Donc, une solution simple, quoique quelque peu hacky, serait de jouer avec les dates. J'écrirais deux scripts:
Script de changement de date horaire
Faites exécuter un script environ une fois par heure, dans votre langue préférée, qui:
- Recherche tout fichier dont la date a été modifiée au cours des 20 dernières années.
- Lorsqu'il trouve un tel fichier, changez sa date de modification à aujourd'hui moins 20 ans.
En PowerShell, cela ressemblerait à ceci:
$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
}
}
L'exécution de ce script aujourd'hui (27 mai) définit la date de modification de tous les fichiers au 1er juin 1994 - il y a exactement 356 * 20 jours. Parce qu'il ne modifie que les fichiers plus récents que la valeur $ before, il ne touchera pas les fichiers qu'il a déjà définis dans le passé.
Script de nettoyage
Le script de nettoyage s'exécuterait tous les soirs et:
- Rechercher des fichiers dont la date a été modifiée "il y a 20 ans et X jours"
- Supprime-les
Je n'écrirai pas le script de cette partie - il existe de nombreux utilitaires qui peuvent gérer la suppression de fichiers plus anciens qu'une date spécifiée, choisissez celui que vous aimez. La partie importante est de rechercher les fichiers qui ont plus de 7300 jours X, où X est le nombre de jours que vous souhaitez les conserver depuis leur dernière modification.
Les avantages
Cela présente quelques avantages par rapport aux autres réponses ici:
- Le minuteur se réinitialise si quelqu'un modifie le fichier.
- Pas besoin de flux alternatifs NTFS pour marquer les fichiers (qui sont conservés lors du déplacement du fichier, ce qui pourrait entraîner la suppression prématurée d'un fichier modifié)
- Doit avoir un impact minimal ou nul sur les performances. Pas besoin de conserver une base de données ou une liste de noms de fichiers et / ou de hachages.
- Rien ne se brise horriblement si les scripts ne s'exécutent pas. Aucun service ou programme en cours d'exécution n'est nécessaire pour mettre à jour la date. Juste quelques tâches planifiées. Les solutions qui reposent sur la recherche de nouveaux fichiers et la mise à jour de leur dernière heure de modification à l'heure actuelle pourraient finir par supprimer de nouveaux fichiers si le service échoue ou se trouve dans une condition de concurrence critique.
Le seul problème que je peux voir est que les gens copient un fichier modifié pour la dernière fois il y a 20 ans dans le dossier de dépôt. Je pense que dans la plupart des scénarios, ce n'est probablement pas un gros problème, mais cela pourrait se produire.