使用 Subversion (SVN) 版本控制時,每個版控目錄下都會生成 .svn 隱藏資料夾存放元資料。專案遷移、匯出乾淨原始碼、或單純想清理時,手動逐層刪除極其痛苦。本文提供註冊表整合方案,將「刪除 SVN 資料夾」加入資料夾右鍵選單,實現任意目錄一鍵遞迴清除所有 .svn,秒級完成。
新建文字文件,貼入以下內容,存為 DeleteSVN.reg,雙擊導入註冊表:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""
| 片段 | 功能 |
|---|---|
cmd.exe /c | 啟動命令解釋器執行後續命令並退出 |
TITLE ... | 設定視窗標題顯示正在處理的目錄 |
COLOR 9A | 設定視窗顏色:亮綠字藍底 (9=藍背景, A=亮綠前景),直觀區分 |
FOR /r "%1" %%f IN (.svn) | 遞迴掃描右鍵點擊的目錄 (%1) 及所有子目錄,尋找名為 .svn 的資料夾 |
DO RD /s /q "%%f" | 強制刪除找到的資料夾及其所有內容 (/s 遞迴, /q 安靜模式不提示確認) |
.svn 資料夾連同內容徹底消失@="cmd.exe /c \"IF EXIST \"%1\.svn\" RD /s /q \"%1\.svn\" \""
建立 DeleteSVN.ps1:
Get-ChildItem -Path $args[0] -Recurse -Directory -Filter ".svn" | Remove-Item -Recurse -Force
註冊表命令欄:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Path\To\DeleteSVN.ps1" "%1"
.svn (僅根目錄),舊版每層皆有,本腳本兩者通用.git 關鍵字,同理可構建 DeleteGit.reg一個 .reg 檔,一次右鍵,解決 SVN 遷移清理的歷史痛點。將系統級自動化能力引入右鍵選單,這就是 Windows 進階用戶的效率哲學。立即部署,讓 .svn 清理成為指尖輕鬆事。