0. 前言
各位是否有定時清除垃圾桶的習慣?這些檔案在預設的軟性刪除下,事實上還佔用著你的磁碟空間。確定可以拋棄的就不用再猶豫了,讓我們透過腳本幫忙定時工作吧!
1. 重點
2. 內容
2.1. 刪除邏輯
軟性刪除 Soft Delete
在檔案刪除的運作中,透過給予標籤的方式略過執行這些檔案,並在必要時候可以復原回來。而平常我們使用的電腦或雲端空間的垃圾桶都是這種格式,先將檔案放到監獄準備處以死刑,然而仍有改變判決的機會。這是軟性刪除的重要概念,但是確定不再需要的東西就不用留戀,因為它們仍然佔用磁碟空間。
硬性刪除 Hard Delete
硬性刪除簡單許多,就直接遠久移除不可復原,那這套邏輯真的不實用了嗎?這種處理方式相對軟性刪除,具有更高的保密性,確保不會因用戶延遲銷毀操作,而有復原檔案偷看的機會。
就我所知,在垃圾桶的內容設定中,可以選擇這個模式。但一般應該很少人開啟,畢竟軟性刪除更是現在的日常生活操作。
2.2. 腳本A-全部清空
在筆者的電腦中,廠商本身有工具幫我每天進行這項動作。如果跟我同樣,重要檔案固定備份,每次刪除檔案前都會檢查,並且垃圾桶時常忘記清理的話,那下方的腳本相信很有用處。然而畢竟是要全面自動化,因此在刪除時加上 -Force 從而跳過用戶確認。但這個指令在設計有些問題,使用強制刪除可以正常執行動作,但會跳出錯誤訊息。因此尾端額外加上指令停用錯誤警告,畢竟這個指令簡單到基本不會出錯。
@echo off
@REM 使用 UTF-8 編碼(不然中文會呈現亂碼)
chcp 65001 >nul
@REM 強制清空垃圾桶
powershell -Command "Clear-RecycleBin -Force -ErrorAction SilentlyContinue"
echo.
echo 完成清除任務
echo.
pause
2.3. 腳本B-磁碟來源
但這個時候議題來了,就怕手賤刪錯檔案,就像神魔之塔 (時代眼淚💧) 融合高等卡牌同樣。為了避免這項問題,我們首先可以在剛剛指令的末端加上 -DriveLetter 參數檢查磁碟來源。比如在本範例,我選擇只移除外接硬碟 D 槽的垃圾。
powershell -Command "Clear-RecycleBin -Force -DriveLetter D -ErrorAction SilentlyContinue"
2.3. 腳本C-檔名篩選
但上述方式的範圍還是太大了,此時,只好使用上次有用到的 rd 指令來幫我們透過迴圈檢查並刪除例外檔案囉。雖然速度會慢上許多,但這種方式盡可能避免誤刪名單上的檔案。
但這邊很可惜的跟各位報備,雖然我有查到 C:\$Recycle.Bin 這個路徑與垃圾桶有關,但實際測試時都是空的。就目前來說筆者這邊不可能完成這項任務,但還是提出這個概念給讀者參考。
3. 後話
透過定時工作我們總算不再擔心占用空間,就筆者家裡狀況,之前曾經幾次累積到 10 多 GB 才清理一次,而且還是在磁碟只有 256 GB 的年代。雖然現在的硬碟越來越大,但同時檔案與工具也是。然而定時清理的大概沒有幾個,重新檢查的人肯定更多。不如養成習慣,確定才刪,重要備份,狠下心來,以此來避免這些反反覆覆的內容。
4. 參考
[1] Clear-RecycleBin — Microsoft Learn
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/clear-recyclebin?view=powershell-7.4
[2] About recycle bin settings — Wondershare
https://recoverit.wondershare.com/windows-tips/show-hide-find-recycle-bin-windows.html#:~:text=The%20path%20of%20recycle%20bin,Recycle%20Bin%20on%20Windows%2010.