Nie ma sposobu, aby polegać na datach, w których plik został skopiowany lub przeniesiony do folderu. Windowsowi udaje się zachować to w różnych systemach plików, dyskach, udziałach sieciowych itp. Możesz być w stanie wypracować coś z serwerem plików linux, lub uniemożliwić bezpośrednie kopiowanie plików za pomocą FTP lub internetowego systemu przesyłania.
Jeśli nie masz nic przeciwko, aby ludzie nie mogli modyfikować plików po ich przesłaniu, możesz mieć osobne foldery do przesyłania i dostępu oraz skrypt, który przenosi pliki między nimi i zmienia ich datę. Ale wygląda na to, że chcesz, aby ludzie mogli bezpośrednio modyfikować pliki.
Tak prostym, choć nieco hackerskim rozwiązaniem byłoby zepsuć daty. Napisałbym dwa skrypty:
Skrypt zmiany godzinowej daty
Skrypt powinien być uruchamiany co godzinę w preferowanym języku, który:
- Wyszukuje dowolny plik ze zmienioną datą w ciągu ostatnich 20 lat.
- Kiedy znajdzie taki plik, zmień jego datę modyfikacji na dziś minus 20 lat.
W PowerShellie wyglądałby mniej więcej tak:
$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
}
}
Uruchomienie tego skryptu dzisiaj (27 maja) ustawia zmodyfikowaną datę wszystkich plików na 1 czerwca 1994 r. - dokładnie 356 * 20 dni temu. Ponieważ zmienia tylko pliki nowsze niż wartość $ before, nie będzie dotykać plików, które zostały już ustawione w przeszłości.
Skrypt oczyszczania
Skrypt czyszczenia będzie uruchamiany co noc i:
- Wyszukaj pliki ze zmodyfikowaną datą „20 lat i X dni temu”
- Usuń ich
Nie napiszę skryptu dla tej części - istnieje wiele narzędzi, które mogą obsłużyć usuwanie plików starszych niż określona data, wybierz cokolwiek chcesz. Ważną częścią jest poszukiwanie plików, które mają 7300 + X dni, gdzie X to liczba dni, w których chcesz je przechowywać od ostatniej modyfikacji.
Zalety
Ma to kilka zalet w porównaniu z innymi odpowiedziami tutaj:
- Timer zostanie zresetowany, jeśli ktoś zmodyfikuje plik.
- Nie ma potrzeby oznaczania plików przez alternatywne strumienie NTFS (które są zachowywane podczas przenoszenia pliku, więc może spowodować przedwczesne usunięcie zmodyfikowanego pliku)
- Powinien mieć minimalny, jeśli jakikolwiek wpływ na wydajność. Nie ma potrzeby przechowywania bazy danych lub listy nazw plików i / lub skrótów.
- Nic nie psuje się okropnie, jeśli skrypty nie działają. Do aktualizacji daty nie jest wymagana żadna usługa ani stale działający program. Tylko kilka zaplanowanych zadań. Rozwiązania, które polegają na sprawdzaniu nowych plików i aktualizowaniu ich ostatniej modyfikacji do chwili obecnej, mogą zakończyć się usunięciem nowych plików, jeśli usługa ulegnie awarii lub przejdzie w stan wyścigu.
Jedyny problem, jaki widzę, to kopiowanie pliku, który został zmodyfikowany 20 lat temu do folderu upuszczania. Wydaje mi się, że w większości przypadków nie jest to duży problem, ale może się pojawić.