Non è possibile fare affidamento sulle date in cui un file è stato copiato o spostato in una cartella. Windows riesce a preservarlo attraverso filesystem, unità, condivisioni di rete, ecc. Potresti essere in grado di elaborare qualcosa con un file server linux o impedire alle persone di copiare direttamente i file utilizzando FTP o un sistema di upload basato sul web.
Se sei d'accordo con le persone che non sono in grado di modificare i file dopo il caricamento, potresti avere cartelle di accesso e caricamento separate e uno script che sposta i file tra di loro e li aggiorna. Ma sembra che tu voglia che le persone siano in grado di modificare direttamente i file.
Quindi una soluzione semplice, anche se un po 'confusa, sarebbe quella di pasticciare con le date. Scriverei due script:
Script di modifica della data oraria
Fai eseguire uno script all'incirca una volta all'ora, nella tua lingua preferita, che:
- Cerca qualsiasi file con una data modificata negli ultimi 20 anni.
- Quando trova un file del genere, cambia la sua data modificata oggi meno 20 anni.
In PowerShell, sarebbe simile a questo:
$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'esecuzione di questo script oggi (27 maggio), imposta la data modificata di tutti i file al 1 ° giugno 1994, esattamente 356 * 20 giorni fa. Poiché sta cambiando solo i file più recenti del valore $ before, non toccherà i file che ha già impostato sul passato.
Script di pulizia
Lo script di pulizia verrà eseguito ogni notte e:
- Cerca file con data modificata "20 anni e X giorni fa"
- Eliminali
Non scriverò lo script per questa parte - ci sono molte utility in grado di gestire la cancellazione di file più vecchi di una data specificata, scegli quello che preferisci. La parte importante è cercare i file che hanno 7300 + X giorni, dove X è il numero di giorni che vuoi conservare dall'ultima modifica.
vantaggi
Questo ha alcuni vantaggi rispetto alle altre risposte qui:
- Il timer si reimposterà se qualcuno modifica il file.
- Non sono necessari flussi alternativi NTFS per contrassegnare i file (che vengono conservati quando si sposta il file, quindi potrebbe causare la cancellazione prematura di un file modificato)
- Dovrebbe avere un impatto minimo sulle prestazioni. Non è necessario conservare un database o un elenco di nomi di file e / o hash.
- Nulla si rompe in modo orribile se gli script non vengono eseguiti. Non è necessario alcun servizio o programma in esecuzione costante per aggiornare la data. Solo un paio di attività programmate. Le soluzioni che fanno affidamento sulla ricerca di nuovi file e sull'aggiornamento dell'ultimo tempo modificato in questo momento potrebbero finire con l'eliminazione di nuovi file se il servizio fallisce o si verifica una condizione di competizione.
L'unico problema che posso vedere è se le persone copiano un file che è stato modificato l'ultima volta 20 anni fa nella cartella di rilascio. Penso che nella maggior parte degli scenari, è improbabile che ciò costituisca un grosso problema, ma potrebbe presentarsi.