今天利用 MSI 桌機把 5TB 行動硬碟內容拷貝到 16TB 大硬碟備份時出現 "檔案名稱將會太長, 目的地資料夾無法接受" 視窗 :
詢問 ChatGPT, 原來 Windows 在未啟用長路徑支援的情況下, 檔案的完整路徑長度限制為 260 個字元, 此長度限制來自舊的 Win32 API, 雖然新版的 Unicode API 理論上可支援長達 32767 字元的路徑, 但預設仍會限制在 260 字元, 因為 "登錄編輯器" 的長路徑支援 (LongPathsEnabled) 預設是關閉的 (=0).
但並非將 LongPathsEnabled 打開後複製長檔案名稱就沒問題, 這還要看應用程式有沒有使用長路徑模式, 如果沒有使用, 即使打開長路徑支援也是無效的, 例如檔案總管 Explorer 就沒有使用長路徑模式. 其他程式例如 PowerShell 7, robocopy, Python 3.6+ 等則有使用長路徑模式.
所以此問題的解決辦法就是先到 "登錄編輯器" 開啟長路徑支援 (LongPathsEnabled) 功能, 然後於 PS 7 中使用 robocopy 來複製資料.
在 Win10/Win11 搜尋框輸入 regedit 打開豋錄表 :
在登錄表找尋下列路徑 :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled
若沒有 LongPathsEnabled 這項就按滑鼠右鍵 → 新增 → DWORD (32 位元) 值=1. 有的話點擊 LongPathsEnabled 將值改為 1, 基數選十進位或十六進位都可以 :
設定完關閉登錄編輯器, 重新啟動電腦.
然後以管理員身分開啟 Power Shell 7 程式, 用 robocopy 指令拷貝檔案, 例如 :
robocopy "G:\video11" "E:\video11" /E /COPYALL /R:0 /W:0
第一個參數是來源資料夾, 第二個是目的地資料夾, /E 表示包含所有子目錄 (包括空的), /COPYALL 表示資料 + 屬性 + 時間戳 + 安全性 (如果需要) 皆被複製 (須管理員權限), /R:0 表示若檔案複製失敗時重試次數為 0; /W:0 表示重試時每次等待 (wait) 的秒數為 0, 亦即如果遇到檔案複製失敗, robocopy 立即跳過不會重試也不會等待, 可避免卡在某個檔案一直重試.
也可以只用 /E 參數 :
robocopy "G:\video11" "E:\video11" /E
總計 已複製 略過 不符 失敗 額外
目錄 : 1829 228 1601 0 0 0
檔案 : 25147 8053 17094 0 0 0
位元組 : 584.171 g 123.906 g 460.264 g 0 0 0
時間 : 0:55:28 0:54:22 0:00:00 0:01:05
速度 : 40,778,505 位元組/秒。
速度 : 2,333.365 MB/分。
已結束 : 2025年11月14日 上午 12:36:17




沒有留言 :
張貼留言