Tidak ada cara untuk mengandalkan tanggal kapan suatu file disalin atau dipindahkan ke folder. Windows mengelola untuk melestarikannya di seluruh sistem file, drive, jaringan berbagi, dll. Anda mungkin dapat menyelesaikan sesuatu dengan server file linux, atau mencegah orang dari menyalin file secara langsung dengan menggunakan FTP atau sistem upload berbasis web.
Jika Anda setuju dengan orang-orang yang tidak dapat memodifikasi file setelah mereka mengunggah, Anda dapat memiliki folder unggahan dan akses yang terpisah, dan skrip yang memindahkan file di antara mereka dan menentukan tanggal kembali. Tapi sepertinya Anda ingin orang dapat memodifikasi file secara langsung.
Jadi solusi sederhana, jika agak hacky, adalah mengacaukan tanggal. Saya akan menulis dua skrip:
Skrip Changer Tanggal Tiap Jam
Buat skrip dijalankan sekali dalam satu jam atau lebih, dalam bahasa pilihan Anda, bahwa:
- Mencari file apa pun dengan tanggal yang diubah dalam 20 tahun terakhir.
- Ketika menemukan file seperti itu, ubah tanggalnya diubah menjadi hari ini minus 20 tahun.
Dalam PowerShell, akan terlihat seperti ini:
$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
}
}
Menjalankan skrip ini hari ini (27 Mei), menetapkan tanggal modifikasi dari semua file menjadi 1 Juni 1994 - tepat 356 * 20 hari yang lalu. Karena hanya mengubah file yang lebih baru dari nilai $ before, itu tidak akan menyentuh file yang telah ditetapkan sebelumnya.
Skrip Pembersihan
Skrip pembersihan akan dijalankan setiap malam, dan:
- Cari file dengan tanggal yang diubah "20 tahun dan X hari yang lalu"
- Hapus mereka
Saya tidak akan menulis skrip untuk bagian ini - ada banyak utilitas yang dapat menangani menghapus file yang lebih tua dari tanggal yang ditentukan, pilih mana yang Anda suka. Bagian yang penting adalah mencari file yang berumur 7300 + X hari, di mana X adalah jumlah hari yang ingin Anda pertahankan sejak mereka terakhir dimodifikasi.
Keuntungan
Ini memiliki beberapa keunggulan dibandingkan jawaban lain di sini:
- Penghitung waktu akan mengatur ulang jika seseorang memodifikasi file.
- Tidak perlu stream alternatif NTFS untuk menandai file (yang disimpan saat memindahkan file, sehingga dapat menyebabkan penghapusan dini dari file yang dimodifikasi)
- Seharusnya minimal jika ada dampak kinerja. Tidak perlu menyimpan database atau daftar nama file dan / atau hash.
- Tidak ada yang rusak jika skrip gagal dijalankan. Tidak ada layanan atau program yang terus berjalan yang diperlukan untuk memperbarui tanggal. Hanya beberapa tugas terjadwal. Solusi yang mengandalkan menonton file baru dan memperbarui waktu terakhir yang dimodifikasi untuk saat ini dapat berakhir dengan menghapus file baru jika layanan gagal atau mengalami kondisi balapan.
Satu-satunya masalah yang bisa saya lihat adalah apakah orang menyalin file yang terakhir diubah 20 tahun yang lalu ke folder drop. Saya pikir dalam sebagian besar skenario, itu tidak mungkin menjadi masalah besar, tetapi bisa muncul.