Windows

使文件夾中的文件過期:x 天后刪除文件

  • June 30, 2014

我希望在每個人都可以訪問的 Windows 共享驅動器中創建一個“放置文件夾”。如果文件在文件夾中停留超過 X 天,我希望文件被自動刪除。

但是,似乎我發現的所有方法都可以使用文件的最後修改日期、最後訪問時間或創建日期。

我正在嘗試將此文件夾設置為使用者可以將文件放入其中以與某人共享的文件夾。如果有人將文件複製或移動到這裡,我希望時鐘在此時開始滴答作響。但是,除非有人實際修改了文件,否則不會更新文件的最後修改日期和創建日期。最後一次訪問時間更新太頻繁了……看來只要在windows資源管理器中打開一個目錄就會更新最後一次訪問時間。

任何人都知道解決這個問題?我認為每天對文件的雜湊進行分類,然後根據某個日期之前的雜湊使文件過期可能是一種解決方案……但是獲取文件的雜湊可能會很耗時。

任何想法將不勝感激!

注意:

我已經在這裡查看了很多答案…查看了文件伺服器資源監視器、powershell 腳本、批處理腳本等。它們仍然使用上次訪問時間、上次修改時間或創建時間…如上所述,它不符合上述需求。

我們使用了 powershell 腳本和策略的組合。該策略指定使用者必須在 Drop_Zone 共享中創建一個文件夾,然後將他們想要的任何文件複製到該文件夾中。當文件夾存在 7 天(使用 CreationTime)時,powershell 腳本將刪除它。

我還在 powershell 腳本中添加了一些日誌記錄,這樣我們就可以驗證它的操作並打開卷影副本,只是為了讓自己完全無能。

這是沒有所有日誌記錄的腳本。

$location = Get-ChildItem \\foo.bar\Drop_Zone
$date = Get-Date
foreach ($item in $location) {
 # Check to see if this is the readme folder
 if($item.PsIsContainer -and $item.Name -ne '_ReadMe') {
   $itemAge = ((Get-Date) - $item.CreationTime).Days
   if($itemAge -gt 7) {
     Remove-Item $item.FullName -recurse -force
   }
 }
 else {
 # must be a file
 # you can check age and delete based on that or just delete regardless
 # because they didn't follow the policy
 }
}

引用自:https://serverfault.com/questions/598133