Khi bạn thực hiện việc copy, di chuyển, save hoặc tạo một file hoặc folder có tổng chiều dài đường dẫn hơn 260 ký tự, bạn sẽ gặp phải lỗi Destination Path Too Long trên Windows. Bài viết này giải thích nguyên nhân gây ra lỗi này và cách bạn có thể quản lý các đường dẫn file quá dài trong Windows.
Thông báo lỗi như sau:
Destination Path Too Long
The file name(s) would be too long for the destination folder. You can shorten the file name and try again, or try a location that has a shorter path.
Hoặc:
An unexpected error is keeping you from copying the file. If you continue to receive this error, you can use the error code to search for help with this problem.
Error 0x80010135: Path too long
Giới hạn độ dài đường dẫn file tối đa trên Windows
Giới hạn 260 ký tự dành cho đường dẫn file là hạn chế của API Win32 (chứ không phải của NTFS file system). Khi bạn cố gắng truy cập một file, Windows API luôn kiểm tra xem đường dẫn có dài hơn giới hạn MAX_PATH hay không.
Các ứng dụng hiện đại sử dụng Unicode API để truy cập file system. Nó không có hạn chế về số ký tự như vậy và có thể xử lý các file/folder có đường dẫn vượt quá 256 ký tự (tối đa 32767 ký tự). Nhưng giới hạn đường dẫn file tối đa vẫn bị ảnh hưởng trên File Explorer tích hợp sẵn.
Cách sửa lỗi “Destination Path Too Long” trên Windows
Để khắc phục lỗi “Destination Path Too Long” trên Windows, trước tiên hãy thử các phương pháp đơn giản sau:
- Rút ngắn tên của thư mục mẹ. Đổi tên tập tin và thư mục thành tên ngắn hơn;
- Kích hoạt hỗ trợ đường dẫn dài trong Windows (xem cách bên dưới). Tuy nhiên, đây không phải là một phương pháp toàn diện nhất;
- Sử dụng trình quản lý file của bên thứ ba hỗ trợ các đường dẫn dài (như Total Commander, 7 Zip File Manager, v.v.);
- Truy cập các thư mục cục bộ bằng đường dẫn UNC. Điều này cho phép bỏ qua các hạn chế về độ dài đường dẫn tối đa của API Win32.
Sau đây là một số cách để khắc phục hạn chế về đường dẫn tệp dài trên Windows 10 và 11.
Cách 1: Kích hoạt Win32 Long Path trên Windows
Tính năng Long Path bị tắt theo mặc định. Bạn có thể bật tính năng này trong Windows 10 và 11 bằng cách sau:
- Mở Local Group Policy Editor (Win + R > gpedit.msc > OK).
- Truy cập tới
Computer Configuration > Administrative Templates > System > Filesystem.
- Kích hoạt chính sách Enable Win32 long paths.
Bạn cũng có thể kích hoạt hỗ trợ long path thông qua registry. Mở trình chỉnh sửa Regedit.exe, truy cập khóa HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
và đặt tham số LongPathsEnabled thành giá trị 1.
Bạn cũng có thể thay đổi tham registry này bằng lệnh PowerShell sau:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name LongPathsEnabled -Value 1
Sau đó khởi động lại máy để áp dụng thay đổi.
Tùy chọn này cho phép bạn vô hiệu hóa hạn chế MAX_PATH cho các ứng dụng win32 và Microsoft Store được biên dịch với tùy chọn longPathAware được kích hoạt trong manifest file. Các ứng dụng này hiện có thể truy cập các đường dẫn vượt quá giới hạn 260 ký tự thông thường.
Tuy nhiên, điều này không ảnh hưởng đến File Explorer tích hợp sẵn trên Windows. Vì vậy, bạn vẫn không thể sử dụng Windows File Explorer để quản lý các file có đường dẫn dài. Trong trường hợp đó, bạn nên sử dụng một trong những cách khác bên dưới.
Cách 2. Sử dụng 7-Zip để thực hiện các thao tác với file có đường dẫn dài
Để bỏ qua hạn chế MAX_PATH trong Windows, bạn có thể sử dụng trình lưu trữ file 7-ZIP. Cài đặt 7-Zip, chạy ứng dụng 7zFM.exe và dán đường dẫn đến thư mục sự cố vào thanh địa chỉ.
Bạn có thể thao tác copy, di chuyển, save hoặc tạo một file hoặc folder thông qua cửa sổ của 7-Zip.
Cách 3. Tạo một Symbolic Link
Bạn có thể rút ngắn tổng chiều dài đường dẫn file bằng cách sử dụng Symbolic Link. Để tạo Symbolic Link đến một thư mục có đường dẫn dài, bạn có thể sử dụng lệnh sau:
mklink /d c:\homelink "C:\longpath…"
Bây giờ bạn có thể thực hiện tất cả các thao tác với file (di chuyển, đổi tên) trên thư mục mà Symbolic Link được gán (c:\homelink).
Cách 4. Sử dụng lệnh SUBST để làm việc với đường dẫn dài
Một cách khác là ánh xạ thư mục có đường dẫn dài vào một đĩa ảo (ví dụ: Z:), bằng cách sử dụng lệnh Subst. Khi đó, bạn có thể rút ngắn độ dài đường dẫn:
Subst Z: “G:\verylongpathhere……”
Bây giờ bạn đã có thể làm việc với dữ liệu trên ổ Z:, nơi đường dẫn file không còn vượt quá giới hạn đường dẫn API Win32.
Bạn có thể xóa ổ đĩa ảo Z này bằng lệnh Subst với tùy chọn /d:
Subst Z: /d
Cách 5. Sử dụng lệnh Map network drive để làm việc với đường dẫn dài
Nếu bạn chỉ cần Copy/di chuyển nhiều thư mục từ nơi này sang nơi khác, bạn có thể ánh xạ thư mục đó thành một ổ đĩa bằng tính năng Map network drive.
- Truy cập thư mục đích bằng đường dẫn UNC của nó. Sao chép đường dẫn thư mục vào clipboard;
- Mở File Explorer và chọn This PC. Nhấn vào nút Map Network Drive rồi chọn Map network drive;
- Paste đường dẫn dài vào ô Folder, chọn ký tự ổ đĩa bạn muốn rồi nhấn Finish;
- Bây giờ bạn đã có thể sao chép các file/folder vào vị trí này mà không gặp lỗi.
Cách 6. Dùng lệnh Robocopy để Copy và di chuyển File
Bạn có thể copy hoặc di chuyển file, ngay cả khi có đường dẫn vượt quá giới hạn, bằng cách sử dụng công cụ robocopy.
Ví dụ: nếu bạn không thể xóa thư mục do quá giới hạn độ dài đường dẫn, trước tiên bạn có thể di chuyển dữ liệu khỏi thư mục bằng robocopy
ROBOCOPY c:\folder1\folder2\folder3\longpath\ c:\tmp\ /MOVE /E
Sau đó, bạn có thể xóa thư mục gốc:
Delete c:\folder1\folder2\folder3\longpath\ /q /f
Cách 7. Khắc phục sự cố đường dẫn file quá dài trong PowerShell
Từ PowerShell 5.1 trở lên, để hoạt động chính xác với các đường dẫn dài trong các lệnh Get-Item, Get-ChildItem và Remove-Item, bạn phải sử dụng tham số LiteralPath thay vì tham số Path.
Ví dụ:
Remote-Item -literalpath "\\?\C:\LongPath\VeryVeryLongPath...."
I use LongPathTool. It has helped me a lot.