Cách khắc phục sự cố 'Tên tệp quá dài' trong Windows

Nếu bạn đã từng gặp vấn đề này, có lẽ đây là một cách khắc phục đơn giản cho bạn. Nếu bạn đã gặp lỗi này nhiều hơn hai lần, thì bạn cũng biết rằng đôi khi nó có thể là một vấn đề phức tạp cần khắc phục.

Hãy hy vọng bạn chỉ gặp phải nhiều loại sửa chữa dễ dàng, nhưng chúng tôi sẽ chuẩn bị cho bạn các bản sửa lỗi ít dễ dàng hơn, đảm bảo hoạt động.

Tại sao độ dài tên tệp thậm chí là một vấn đề trong Windows?(Why Is Filename Length Even An Issue In Windows?)

Có một lịch sử lâu dài về độ dài tên tệp là một vấn đề đối với các hệ điều hành như Windows . Đã có lúc bạn không thể có tên tệp dài hơn 8 ký tự cộng với phần mở rộng tệp 3 ký tự. Điều tốt nhất bạn có thể làm là một cái gì đó như myresume.doc . Đây là một hạn chế được đặt ra bởi thiết kế của hệ thống tệp.

Mọi thứ trở nên tốt hơn khi các phiên bản Windows mới ra mắt. Chúng tôi đã đi từ một hệ thống tệp cũ, hạn chế, sang một thứ gọi là Hệ thống tệp công nghệ mới(New Technology File System) ( NTFS ). NTFS đã đưa chúng tôi đến một điểm mà tên tệp có thể dài 255 ký tự và độ dài đường dẫn tệp có thể lên đến 32.767 ký tự. Vì vậy, làm thế nào chúng ta có thể có tên tệp quá dài?

Windows có những thứ được gọi là biến hệ thống. Đây là những biến mà Windows dựa vào để hoạt động, bởi vì Windows sẽ luôn biết ý nghĩa của các biến và vị trí của chúng, ngay cả khi chúng ta đang di chuyển các bit và byte khắp nơi. Biến hệ thống MAX_PATH là biến hạn chế tên tệp và đường dẫn tệp dưới 260 ký tự.

Là một biến, bạn nghĩ chúng tôi có thể thay đổi nó. Không, chúng ta không nên. Nó sẽ giống như kéo một sợi chỉ ra khỏi áo len. Ngay sau khi một biến hệ thống thay đổi, các biến hệ thống khác và các thành phần phụ thuộc vào chúng bắt đầu làm sáng tỏ.

Làm thế nào để chúng tôi sửa chữa nó, sau đó?

Khắc phục dễ dàng(The Easy Fix)

Nếu may mắn, bạn sẽ nhận được lỗi và biết chính xác tên tệp nào đang gây ra sự cố. Hoặc ít nhất là nơi để tìm tệp. Có thể bạn có một tên tệp giống như sau:

C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

Rõ ràng ai là người phạm tội trong trường hợp này. Tìm tệp trong Windows Explorer hoặc File Explorer như nó được gọi trong Windows 10 , nhấp một lần vào tệp, nhấn F2 để đổi tên và thay đổi tên tệp ngớ ngẩn đó thành một cái gì đó hợp lý hơn. Vấn đề đã(Problem) được giải quyết.

Các bản sửa lỗi ít dễ dàng hơn(The Less Easy Fixes)

Không phải lúc nào cũng dễ dàng khắc phục sự cố này. Đôi khi bạn không thể thay đổi tên của các tệp hoặc thư mục vì bất kỳ lý do gì.

Các giải pháp sau đây sẽ giúp bạn. Chúng không khó để làm.

Di chuyển(Move) , xóa(Delete) hoặc sao chép tệp hoặc thư mục bằng PowerShell(Or Copy Files Or Directories Using PowerShell)

Đôi khi bạn gặp lỗi khi cố gắng di chuyển, xóa hoặc sao chép các thư mục trong đó số ký tự cho đường dẫn tệp lớn hơn 260.

Lưu ý rằng thư mục từ và thư mục có thể hoán đổi cho nhau. Chúng tôi sẽ sử dụng 'thư mục' trong tương lai. Các lệnh ghép ngắn PowerShell sau đây cũng có thể được sử dụng trên các tệp.

Có lẽ đường dẫn tệp trông giống như sau:

C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx

Đường dẫn tệp đó dài 280 ký tự. Vì vậy, chúng tôi không thể sao chép thư mục từ đó sang một nơi khác bằng phương pháp sao chép-dán thông thường. Chúng tôi nhận được lỗi Đường dẫn Đích Quá dài(Destination Path Too Long) .

Giả sử rằng vì bất kỳ lý do gì, chúng ta không thể đổi tên các thư mục chứa tệp được lồng vào nhau. Chúng ta làm gì?

Mở PowerShell(Open PowerShell) . Nếu bạn chưa sử dụng PowerShell , hãy thưởng thức bài viết Sử dụng PowerShell cho Người dùng Gia đình - Hướng dẫn cho Người mới bắt đầu của(Using PowerShell for Home Users – A Beginner’s Guide) chúng tôi . Tuy nhiên, bạn có thể thực hiện các bước tiếp theo mà không cần đọc bài viết.

Khi PowerShell mở ra, bạn sẽ ở thư mục gốc của thư mục người dùng của mình. Tiếp(Follow) theo giả sử C:\Users\guymc là thư mục người dùng của bạn.

Thư mục có tên This nằm trong thư mục Documents . Để chuyển vào thư mục Documents , chúng ta sử dụng lệnh DOS cd Documents

Bạn sẽ thấy sự thay đổi nhanh chóng đối với C:\Users\guymc\Documents . Tốt đấy. Chúng tôi đang làm việc gần hơn với các thư mục, điều này sẽ giúp mọi thứ dễ dàng hơn.

Sao chép thư mục bằng Copy-Item

Chúng tôi muốn sao chép thư mục This và nội dung của nó vào ThatNewFolder . Hãy sử dụng lệnh ghép ngắn PowerShell Copy-Item với các tham số -Destination-Recurse .

-Destination cho PowerShell biết nơi chúng ta muốn bản sao. -Recurse yêu cầu PowerShell sao chép tất cả các mục bên trong đến đích. Việc sao chép để lại các bản gốc ở vị trí của chúng và tạo tất cả các bản gốc mới ở đích.

Copy-Item This -Destination ThatNewFolder -Recurse

Di chuyển thư mục bằng Move-Item

Giả sử chúng ta muốn di chuyển thư mục This và tất cả các thư mục và tệp trong đó sang ThatNewFolder . Di chuyển không để nguyên tại chỗ.

Chúng ta có thể sử dụng lệnh ghép ngắn PowerShell Move-Item với các tham số -Path-Destination . -Path xác định mục chúng ta muốn di chuyển và -Destination cho PowerShell biết nơi chúng ta muốn nó. 

Lệnh ghép ngắn sẽ đặt This bên trong ThatNewFolder . Nó cũng sẽ di chuyển mọi thứ bên trong thư mục This. Move-Item có thể được sử dụng để di chuyển tệp hoặc thư mục và nó hoạt động bất kể độ dài của đường dẫn tệp hoặc tên tệp.

Move-Item -Path This -Destination ThatNewFolder

Để đảm bảo nó hoạt động, hãy sử dụng lệnh cd ThatNewFolder để vào ThatNewFolder . Sau đó, sử dụng lệnh dir để liệt kê các thư mục trong ThatNewFolder . Bạn sẽ thấy thư mục này ở trong đó.

Xóa thư mục bằng cách sử dụng loại bỏ mục

Nếu chúng ta muốn xóa thư mục This và mọi thứ trong đó, chúng ta sử dụng lệnh ghép ngắn Remove-Item .

Lệnh ghép ngắn Remove-Item có một số tính năng an toàn được tích hợp sẵn khiến việc xóa một thư mục có những thứ bên trong nó trở nên khó khăn. Trong ví dụ của chúng tôi, chúng tôi biết chúng tôi muốn xóa mọi thứ, vì vậy chúng tôi sẽ sử dụng các tham số -Recurse để làm cho nó xóa mọi thứ bên trong và -Force để thực hiện điều đó mà không hỏi chúng tôi xem chúng tôi có chắc chắn về mọi mục bên trong hay không.

Hãy cảnh báo! Việc khôi phục bất cứ thứ gì đã xóa theo cách này sẽ cực kỳ khó khăn. Bạn có thể thử các phương pháp trong Cách khôi phục các tệp bị xóa do vô tình , nhưng không mong đợi nhiều.

Remove-Item This -Recurse -Force

Bạn có thể sử dụng lại lệnh dir để đảm bảo rằng nó đã biến mất.

Làm cho Windows 10 chấp nhận các đường dẫn tệp dài(Make Windows 10 Accept Long File Paths)

Nếu bạn biết mình sắp sử dụng các đường dẫn tệp dài và tên tệp dài lặp đi lặp lại, thì việc làm cho Windows hoạt động cho bạn sẽ dễ dàng hơn. Không có ý nghĩa gì khi sử dụng PowerShell để thực hiện công việc hàng ngày.

Có hai cách chúng ta có thể làm điều này. Một dành cho người dùng Windows 10 Home và một dành cho người dùng Windows 10 Pro hoặc Enterprise . Các phương pháp này có thể hoạt động đối với Windows 8.1 hoặc phiên bản cũ hơn, nhưng chúng tôi không thể đảm bảo điều đó.

Đặt(Make) Windows 10 Home chấp nhận các đường dẫn tệp dài(Home Accept Long File Paths)

Để làm cho Windows 10 Home chấp nhận các đường dẫn tệp dài, chúng ta cần mở Trình chỉnh sửa sổ đăng ký(Registry Editor) . Nếu bạn chưa từng làm việc trong Registry Editor trước đây, hãy thận trọng. Việc vô tình xóa hoặc thay đổi những thứ trong đây có thể khiến Windows ngừng hoạt động hoàn toàn.

Luôn tạo bản sao lưu sổ đăng ký của bạn trước khi thực hiện bất kỳ thay đổi nào. Tìm hiểu mọi thứ bạn cần biết về điều đó trong Hướng dẫn cơ bản để sao lưu và khôi phục Windows Registry( Ultimate Guide to Backing Up and Restoring the Windows Registry) của chúng tôi .

Khi bạn đã mở Registry Editor và sao lưu của bạn được tạo, hãy điều hướng đến vị trí HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem và tìm khóa LongPathsEnabled .

Bấm đúp vào LongPathsEnabled . Trong trường Dữ liệu giá trị:,(Value data:) hãy đảm bảo số 1 ở đó. Bấm OK để thực hiện thay đổi.

Thoát khỏi Registry Editor và bạn sẽ có thể làm việc với các đường dẫn tệp dài điên cuồng.

Làm(Make) cho Windows 10 Pro hoặc doanh nghiệp chấp nhận đường dẫn tệp dài(Pro Or Enterprise Accept Long File Paths)

Để cho phép Windows 10 Pro hoặc Enterprise sử dụng các đường dẫn tệp dài, chúng tôi sẽ sử dụng Trình chỉnh sửa chính sách nhóm(Group Policy Editor) . Đó là một công cụ cho phép chúng tôi thiết lập các chính sách về cách Windows hoạt động ở máy tính và cấp người dùng.

Chúng tôi đã có một số bài viết về việc sử dụng chính sách nhóm để thực hiện những việc như tắt hoặc bật tùy chọn Internet Explorer( disabling or enabling Internet Explorer options) hoặc thêm thông báo vào màn hình đăng nhập( adding a message to the logon screen) .

Mở Trình chỉnh sửa chính sách nhóm(Group Policy Editor) bằng cách đi tới menu Bắt đầu(Start) và nhập gpedit . Kết quả hàng đầu phải là Chỉnh sửa chính sách nhóm(Edit group policy) . Bấm đúp vào đó.

Khi Trình chỉnh sửa chính sách nhóm(Group Policy Editor) mở ra, hãy điều hướng đến Computer Configuration > Administrative Templates > System > Filesystem . Ở đó, bạn sẽ thấy chính sách Bật đường dẫn dài Win32(Enable Win32 long paths) .

Nhấp đúp vào nó để chỉnh sửa cài đặt chính sách. Thay đổi nó từ Disabled thành Enabled , sau đó nhấp vào nút OK để thực hiện thay đổi. 

Chính sách có thể không có hiệu lực ngay lập tức. Tuy nhiên, bạn có thể buộc cập nhật chính sách nhóm( force the group policy to update) .

Đó là nó(That’s It)

Có một số cách khác để giải quyết các tên tệp dài và đường dẫn tệp, nhưng những gì chúng tôi đã trình bày ở đây là các phương pháp đơn giản và hiệu quả nhất.



About the author

Tôi là kỹ sư phần mềm và có kinh nghiệm với cả Microsoft Office và trình duyệt Chrome. Tôi am hiểu nhiều khía cạnh của phát triển web, bao gồm nhưng không giới hạn ở: HTML, CSS, JavaScript, jQuery và React. Sở thích làm việc với công nghệ của tôi cũng có nghĩa là tôi đã quen thuộc với các nền tảng khác nhau (Windows, Mac, iOS) và hiểu cách chúng hoạt động.



Related posts