?? 軟件名稱:目錄遷移工具
?? 軟件功能:目錄遷移
?? 支持平臺:#Windows
?? 軟件簡介:一款開源的目錄遷移工具,通過使用符號鏈接的方式,快速而安全地將大型目錄遷移到其他磁盤,同時保留原有路徑,使得依賴于這些路徑的程序能夠正常運行。解決了原磁盤空間不足的問題,提供了透明遷移的體驗,無需擔心文件的實際位置變化。
?? 軟件下載:點擊下載 (https://github.com/zhao-wuyan/directory-migration-tool/releases?)
一個使用符號鏈接透明遷移大型目錄的 Windows 工具,支持 PowerShell CLI 和 WPF GUI 兩種方式。
- ? 透明遷移: 使用目錄符號鏈接 (
mklink /D),應用程序無感知 - ? 可靠復制: 使用
robocopy 鏡像復制,保留權限、時間戳和屬性 - ? 實時進度: 顯示復制進度、速度、預計剩余時間
- ? 安全回滾: 出錯自動回滾至原始狀態
- ? 路徑驗證: 阻止遷移系統關鍵目錄
- ? 磁盤檢查: 驗證目標磁盤空間是否充足
- ? 大文件統計: 統計超過閾值的大文件數量
- ? 一鍵遷移模式: 基于
quick-migrate.json 的批量遷移與還原 - ? 可逆遷移(還原功能): 將符號鏈接一鍵還原為真實目錄
- ? 修復模式: 基于現有目標目錄重建符號鏈接(不復制數據)
- ? 應用內用戶指南: 完整的幫助系統,包含使用步驟、常見問題和最佳實踐
- ? 現代化界面: 統一的設計語言,流暢的動畫效果,優秀的用戶體驗
- Windows 10/11 (x64)
- .NET 8.0 Desktop Runtime(僅框架依賴版本需要)
- 管理員權限(或啟用開發者模式)
- 目標推薦 NTFS 文件系統
.\MoveWithSymlink.ps1 -Source "C:\Users\YourName\Pictures" -Target "D:\Data\Pictures"
可選參數:
-LargeFileThresholdMB: 大文件閾值(默認 1024MB)-RobocopyThreads: 復制并行線程數(默認 8)-SampleMilliseconds: 進度采樣間隔(默認 1000ms)-Repair: 修復模式(基于現有目標目錄重建符號鏈接,不復制數據)
修復模式示例:
# 當目標目錄已存在但源路徑的符號鏈接丟失或被破壞時使用
.\MoveWithSymlink.ps1 -Source "C:\Users\YourName\Pictures" -Target "D:\Data\Pictures" -Repair
- 直接運行(推薦,自動申請管理員權限)
.\MoveWithSymlinkWPF\bin\publish\win-x64\目錄遷移工具.exe
- 使用啟動腳本
- 構建/發布
# 發布完整版(包含運行時,約 70+ MB)
.\publish.ps1
# 發布輕量版(框架依賴,約 20+ MB,需要系統安裝 .NET 8.0)
.\publish.ps1 -Mode lite
# 同時發布兩個版本
.\publish.ps1 -Mode both
詳細發布說明請查看:docs/發布版本說明.md
- 在可執行文件同目錄放置
quick-migrate.json - 啟動應用,點擊頂部“? 一鍵遷移”進入批量遷移頁
- 選擇“統一目標目錄”或“分任務目錄”策略后開始執行
- 支持“未遷移/已遷移”狀態分組、失敗不阻塞后續、單任務還原與備份清理
- 詳情見:
docs/v1.1/快速上手指南.md
- 點擊主界面右上角的 [? 使用說明] 按鈕,可查看詳細的用戶指南
- 用戶指南包含:
- 軟件概述和核心優勢
- 手動模式使用步驟
- 一鍵遷移模式說明
- 還原模式和修復模式詳解
- 常見問題解答(FAQ)
- 選擇源目錄(要遷移的目錄)
- 選擇目標目錄(遷移到的位置)
- 配置大文件閾值和復制線程數
- 修復模式: 當檢測到可修復條件時(目標存在但源符號鏈接丟失/錯誤),會顯示"修復鏈接"按鈕
- 掃描源目錄統計文件數量和大小
- 檢查目標磁盤可用空間
- 顯示大文件(超過閾值)數量
- 實時顯示復制進度和速度
- 查看詳細日志輸出
- 可隨時取消操作
- 路徑驗證: 檢查源/目標路徑合法性,驗證權限
- 掃描分析: 統計文件數量、總大小、大文件數
- 復制文件: 使用 robocopy 多線程鏡像復制
- 創建鏈接: 將源目錄重命名為備份,創建符號鏈接指向目標
- 健康檢查: 驗證符號鏈接可訪問性
- 清理備份: 驗證通過后刪除備份目錄
C:\WindowsC:\Program FilesC:\Program Files (x86)C:\ProgramData\Microsoft- 其他系統關鍵目錄
- OneDrive/Dropbox/Google Drive 等云盤同步目錄
- 任何步驟失敗自動回滾
- 刪除已創建的符號鏈接
- 還原原始目錄
- ?? UI現代化設計:統一全局按鈕樣式,添加陰影和懸停動畫效果;改進Tab控件設計,增加漸變背景和過渡動畫;優化文本渲染清晰度和界面層次感。
- ?? 應用內用戶指南:新增完整的用戶指南窗口(UserGuideWindow.xaml),提供軟件概述、使用步驟、常見問題等幫助內容;資源化文本管理(UserGuideTexts.xaml),便于維護和本地化。
- ? 界面交互優化:去除冗余復制按鈕,優化Tab切換體驗;調整邊框圓角、間距和視覺元素,提升整體專業感。
- 新增一鍵遷移模式:讀取
quick-migrate.json 自動掃描任務,按"未遷移/已遷移"分組展示;順序執行,單項失敗不阻塞;底部統一日志;支持中斷續傳(robocopy /Z /ZB)。 - 手動模式新增還原功能:選擇符號鏈接源目錄自動進入"還原模式"(橙色標簽),目標路徑只讀;執行對稱的 6 階段反向流程;完成后可選擇刪除或保留目標數據(
restoreKeepTarget)。 - 標記文件與狀態管理:引入
.xinghe-migrate.lock/.done 與 .xinghe-reduction.lock/.done;修復還原后標記文件殘留問題,遷移前/還原后清理源目錄標記;目錄非空檢查忽略標記文件。 - 符號鏈接選擇與對話框修復:處理系統對話框自動解析符號鏈接的問題,支持反向查找并提示使用符號鏈接路徑進入還原模式;建議優先直接選擇符號鏈接路徑本身。
- 兼容性與限制:支持 HKCU/HKLM、x64/x86 注冊表視圖;非管理員提示啟用開發者模式;暫不支持網絡路徑(UNC)。
- 新增與變更文件(節選):
MoveWithSymlinkWPF/Views/QuickMigratePage.xaml、ViewModels/QuickMigrateViewModel.cs、核心 ReversibleMigrationService、quick-migrate.json 示例配置。 - 深入文檔:
docs/v1.1/快速上手指南.md、docs/v1.1/v1.1實現說明.md、docs/v1.1/手動模式還原功能使用說明.md、docs/v1.1/符號鏈接選擇說明.md。
- 純 PowerShell 5.1+ 腳本
- 使用
robocopy 進行文件復制 - 使用
mklink 創建符號鏈接
- .NET 8.0 平臺
- WPF 框架(支持單文件自包含發布)
- MVVM 架構 (CommunityToolkit.Mvvm)
- 核心庫分離 (MigrationCore) 便于復用
moveFloder/
├── MigrationCore/ # 核心業務邏輯類庫
│ ├── Models/ # 數據模型
│ └── Services/ # 服務層
│ ├── FileStatsService.cs
│ ├── MigrationService.cs
│ ├── PathValidator.cs
│ ├── SymbolicLinkHelper.cs
│ ├── ReversibleMigrationService.cs
│ ├── MigrationStateDetector.cs
│ ├── QuickMigrateConfigLoader.cs
│ └── RegistryLocatorService.cs
│
├── MoveWithSymlinkWPF/ # WPF GUI 應用
│ ├── ViewModels/ # 視圖模型
│ │ ├── MainViewModel.cs
│ │ └── QuickMigrateViewModel.cs
│ ├── Views/ # 視圖
│ │ ├── QuickMigratePage.xaml
│ │ ├── QuickMigratePage.xaml.cs
│ │ ├── UserGuideWindow.xaml # 用戶指南窗口
│ │ ├── UserGuideWindow.xaml.cs
│ │ ├── FolderPickerWindow.xaml
│ │ └── FolderPickerWindow.xaml.cs
│ ├── Resources/ # 資源文件
│ │ ├── UserGuideTexts.xaml # 用戶指南文本資源
│ │ └── README-使用說明資源管理.md
│ ├── Converters/ # XAML 轉換器
│ │ └── BooleanConverters.cs
│ ├── MainWindow.xaml # 主窗口
│ ├── App.xaml # 應用程序
│ └── Properties/PublishProfiles/
│ ├── win-x64.pubxml
│ └── win-x64-fast.pubxml
│
├── MoveWithSymlink.ps1 # PowerShell CLI 版本
├── publish.ps1 # 發布腳本(WPF)
├── quick-migrate.json # 一鍵遷移配置(可選)
└── run.ps1 # 啟動腳本(WPF)
- 管理員權限: 建議以管理員身份運行,或啟用 Windows 開發者模式
- NTFS 文件系統: 目標路徑建議使用 NTFS,以保留完整文件屬性
- 磁盤空間: 確保目標磁盤有足夠空間(需源目錄大小 + 10% 余量)
- 云盤目錄: 避免遷移正在同步的云盤目錄,可能導致沖突
- 長路徑支持: 建議啟用 Windows 長路徑支持(組策略或注冊表)
- 網絡路徑限制: 暫不支持 UNC 網絡路徑
如果不想以管理員身份運行,可以啟用 Windows 開發者模式:
- 打開 設置 > 隱私和安全性 > 開發者選項
- 開啟 開發人員模式
- Visual Studio 2022 或更高版本
- .NET 8.0 SDK
- 克隆或下載項目
- 打開
MoveWithSymlink.sln - 還原 NuGet 包
- 構建解決方案 (Ctrl+Shift+B)
# 使用 CLI 構建
dotnet restore
dotnet build -c Release
# 運行 WPF GUI(開發調試)
cd MoveWithSymlinkWPF
dotnet run -c Release
# 發布為單文件(自包含)
dotnet publish MoveWithSymlinkWPF/MoveWithSymlinkWPF.csproj -p:PublishProfile=win-x64 -c Release
將 C 盤的大型游戲遷移到 D 盤,游戲啟動器仍能正常識別路徑
將 C:\Users\YourName\Documents 遷移到更大的磁盤
將 node_modules、.gradle 等大型緩存目錄遷移到其他磁盤
遷移完成后驗證:
- ? 原路徑可正常訪問(符號鏈接有效)
- ? 文件讀寫功能正常
- ? 目標目錄大小與源目錄一致
- ? 控制臺/日志顯示完整信息
- ? 失敗時自動回滾,原路徑保持可用
MIT License
歡迎提交 Issue 和 Pull Request!
警告: 此工具會移動大量文件并創建符號鏈接,使用前請確保已備份重要數據!
當出現以下情況時,可以使用修復模式來重建符號鏈接:
- 符號鏈接被意外刪除
- 符號鏈接被替換為普通目錄
- 符號鏈接指向錯誤的目標
- 復制完成但未成功創建符號鏈接
- ? 不復制數據: 基于現有目標目錄直接重建符號鏈接,節省時間
- ? 自動備份: 如果源路徑是非空目錄,會自動備份為
.bak_時間戳 - ? 備份標記: 自動創建
.xinghe-repair.info 記錄修復信息(時間戳、原始路徑等) - ? 安全刪除: 備份清理時移入回收站(僅限修復模式),可恢復
- ? 安全回滾: 失敗時自動還原到修復前狀態
- ? 智能檢測: 自動識別符號鏈接狀態并采取相應操作
PowerShell CLI:
.\MoveWithSymlink.ps1 -Source "C:\App\Data" -Target "D:\Backup\AppData" -Repair
WPF GUI:
- 手動模式:選擇源路徑和目標路徑后,如果滿足修復條件會顯示"修復鏈接"按鈕
- 驗證路徑: 檢查目標目錄是否存在,路徑關系是否合法
- 處理源路徑:
- 源不存在 → 直接創建符號鏈接
- 源是符號鏈接 → 檢查指向,錯誤則重建
- 源是空目錄 → 刪除后創建符號鏈接
- 源是非空目錄 → 備份后創建符號鏈接,并創建
.xinghe-repair.info 標記文件
- 驗證鏈接: 確認符號鏈接創建成功且可訪問
- 清理備份: GUI 模式會詢問是否將備份移入回收站(可恢復)
修復模式創建備份時,會在備份目錄中生成 .xinghe-repair.info 文件,記錄以下信息:
- 修復時間戳: 修復操作的執行時間
- 原始目錄名稱: 源文件夾的原名
- 原始完整路徑: 源文件夾的完整路徑
- 目標路徑: 符號鏈接指向的目標位置
- 備份路徑: 備份目錄的完整路徑
- 備份創建時間: 備份創建的時間戳
- 修復模式: 固定為 "SymbolicLinkRecreation"
- 備注信息: 說明備份的創建方式
此標記文件永久保留,不影響任何邏輯判斷,僅供用戶日后查看和判斷備份來源。
- 如何獲取幫助?點擊主界面右上角的 [? 使用說明] 按鈕,查看完整的用戶指南。
- 為什么 EXE 文件較大?自包含發布包含 .NET 運行時與依賴,通常 60–80MB。
- 沒有安裝 .NET 可以運行嗎?可以,自包含發布無需預裝 .NET。
- 是否需要管理員權限?是。應用含 UAC 清單,啟動時會自動申請管理員權限。
- 修復模式和還原模式有什么區別?修復模式不復制數據,只重建符號鏈接;還原模式會將數據從目標復制回源,并刪除符號鏈接。
- 雙擊 EXE 與運行
run.ps1 有何區別?功能相同,腳本提供額外提示與錯誤處理,直接雙擊更簡便。
該文章在 2026/1/30 16:34:36 編輯過