Tại sao Windows lại báo cáo thư mục này quá dài để sao chép?

Tại sao Windows lại báo cáo thư mục này quá dài để sao chép?
Tại sao Windows lại báo cáo thư mục này quá dài để sao chép?

Video: Tại sao Windows lại báo cáo thư mục này quá dài để sao chép?

Video: Tại sao Windows lại báo cáo thư mục này quá dài để sao chép?
Video: Google Titan Security Key Bundle | How to Set Up Advanced Online Protection - YouTube 2024, Tháng tư
Anonim
Nếu bạn làm việc với Windows đủ lâu, đặc biệt là với các thư mục và tệp có tên dài, bạn sẽ gặp phải một lỗi kỳ lạ: Windows sẽ báo cáo rằng đường dẫn thư mục hoặc tên tệp quá dài để di chuyển đến đích mới hoặc thậm chí là xóa. Thỏa thuận là gì?
Nếu bạn làm việc với Windows đủ lâu, đặc biệt là với các thư mục và tệp có tên dài, bạn sẽ gặp phải một lỗi kỳ lạ: Windows sẽ báo cáo rằng đường dẫn thư mục hoặc tên tệp quá dài để di chuyển đến đích mới hoặc thậm chí là xóa. Thỏa thuận là gì?

Hey How-To Geek!

So the other day, I was reorganizing some files on my computer, creating folders, that kind of stuff. Then, when I was moving some files into a folder, I get a message, stating that the resulting folder path would be too long. I was confused. I know that every single OS since DOS supports Long Filenames, yet Windows claims that the path is too long? Why does this happen?

Sincerly,

Mr. Disorganized

Vấn đề bạn đang gặp phải là giao điểm không may của hai hệ thống, trong trường hợp như thế này, tạo ra lỗi. Để hiểu chính xác nơi lỗi xuất phát, chúng tôi cần tìm hiểu lịch sử của tên tệp dài (LFN) và cách Windows tương tác với chúng trước khi chúng tôi nghiên cứu giải pháp.

Tên tập tin dài đã được giới thiệu, thông qua kiến trúc MS-DOS cơ bản, trong Windows 95. Hệ thống LFN mới cho phép tên tệp và thư mục có tối đa 255 ký tự. Đây là một sự mở rộng chào mừng của hệ thống tên tệp trước đó, thường được gọi là 8.3 filenaming bởi vì tên được giới hạn trong tám ký tự và phần mở rộng gồm 3 chữ số, nhưng còn được gọi là Short Filename (SFN). Như bạn có thể tưởng tượng, khi đó vẫn còn rất nhiều ứng dụng dựa trên DOS và có nhiều hơn một vài cơn đau đầu cố gắng để có được các LFN mới hơn và các SFN cũ để chơi tốt với nhau. Nếu bạn đã từng gặp một đĩa mềm cũ hoặc đĩa CD-ROM với các tệp bị cắt bớt kỳ lạ trên nó (như abcdef ~ 1.txt) thì tên tệp đã bị một số ứng dụng cũ SFN sử dụng từ một số LFN dài hơn và không được hỗ trợ (như abcdefghijk). txt).

Tuy nhiên, chúng tôi là một chặng đường dài từ giữa những năm 1990, và toàn bộ nội dung của Long Filename (phần lớn) được củng cố chắc chắn. Nếu bạn đang chạy phiên bản Windows trong 10 năm qua, có thể bạn sẽ không bao giờ gặp phải xung đột về tên tệp như chúng tôi đã từng chạy ngược trở lại trong DOS / Windows 95 ngày. Điều đó nói rằng, chúng tôi vẫn chạy vào trục trặc, như bạn phát hiện với dự án dọn dẹp đĩa của bạn. Nhưng tại sao? Nếu hệ thống Long Filename của Windows hỗ trợ thư mục và tên tệp có tối đa 255 ký tự cho mỗi thành phần, bạn đang chạy tường nào? Chúng tôi không thể đổ lỗi cho NTFS (hệ thống tập tin mà phần lớn các máy Windows hiện đại sử dụng) vì NTFS sẽ hỗ trợ chuỗi các thư mục và tên tệp lên đến tổng chiều dài đường dẫn là 32.767 ký tự. Điều đó vượt xa cấu trúc thư mục điển hình mà hầu hết người dùng sẽ cần.

Tất cả mọi thứ đều tách rời là một hạn chế nhân tạo Windows ngăn xếp trên đỉnh của hệ thống LFN / NTFS: biến MAX_PATH. Biến MAX_PATH chỉ định rằng cấu trúc thư mục đầy đủ trong Windows không được vượt quá 260 tổng ký tự, bao gồm ký tự ổ đĩa, dấu hai chấm, dấu gạch chéo ngược và dấu phản ứng ngược ở cuối. Do đó, bạn chỉ có MAX_PATH thực tế tiềm năng là 256 ký tự, ví dụ: C: của bạn-256-ký tự-path.

Vì vậy, điều xảy ra khi bạn dọn dẹp máy tính là bạn có một thư mục có đường dẫn dài (vì tên thư mục dài, tên tệp dài hoặc cả hai) và khi bạn cố di chuyển một hoặc nhiều những thư mục đó vào một thư mục khác có đường dẫn dài, tổng chiều dài của tên đường dẫn vượt quá giới hạn 260 ký tự được áp đặt bởi biến MAX_PATH.

Bây giờ, bạn có thể nghĩ “Ah-hah! Chúng tôi sẽ chỉ thay đổi biến MAX_PATH và giải quyết vấn đề!”Than ôi, nó không đơn giản như vậy. Không chỉ biến MAX_PATH về cơ bản được mã hóa cứng vào Windows, nhưng ngay cả khi bạn đã trải qua những rắc rối to lớn khi thay đổi nó, bạn sẽ kết thúc việc phá vỡ quá nhiều nó sẽ không đáng giá. Quá nhiều ứng dụng mong đợi biến đường dẫn là những gì Windows đã xác định từ lâu. Chúng ta không thể thay đổi nó mà không tạo ra một mớ hỗn độn khổng lồ.

Điều đó để lại cho bạn ở đâu? Vâng, giải pháp đơn giản nhất là chỉnh sửa dữ liệu đường dẫn. Ví dụ: nếu bạn có một tấn bài viết đã lưu nơi ứng dụng / tiện ích bạn đã sử dụng để lưu chúng từ web đã tạo một thư mục có tiêu đề đầy đủ của bài viết + bài viết, và sau đó tên tệp chính là tiêu đề đầy đủ của bài viết + dẫn bài viết, nó sẽ thực sự đơn giản để đạt hoặc vượt quá MAX_PATH với một lần lưu. Chỉnh sửa các tiêu đề thư mục và bài viết khổng lồ này xuống một kích thước hợp lý hơn là một cách dễ dàng để khắc phục sự cố.

Nếu bạn có một số lượng lớn tệp có đường dẫn dài và bạn không muốn chỉnh sửa tất cả các tệp đó (hoặc nếu bạn muốnxóa bỏ một tấn thư mục cũ quá dài để Windows xử lý khi bị hạn chế bởi biến MAX_PATH), có một công việc dòng lệnh xung quanh. Mặc dù Windows bị giới hạn bởi biến MAX_PATH, các kỹ sư Windows nhận ra rằng sẽ có những tình huống trong đó người dùng sẽ cần phải xử lý các tên đường dẫn dài hơn. Như vậy, Windows API có một chức năng để xử lý các đường dẫn rất dài.

Để tận dụng lợi thế của API đó và sử dụng các công cụ dòng lệnh trên các thư mục / tên tệp khó sử dụng của bạn, bạn chỉ cần nối thêm tên thư mục với một vài ký tự phụ. Ví dụ: nếu bạn có cấu trúc thư mục lớn mà bạn muốn xóa (nhưng đã nhận được lỗi do độ dài đường dẫn khi bạn cố gắng), bạn có thể thay đổi lệnh từ:

rmdir c:documentssome-really-super-long-folder-name-scheme

đến:

rmdir \?c:documentssome-really-super-long-folder-name-scheme

Điều quan trọng là việc bổ sung

?

phần trước khi bắt đầu đường dẫn tệp; điều này hướng dẫn Windows bỏ qua những hạn chế áp đặt bởi biến MAX_PATH và tương tác với đường dẫn bạn vừa cung cấp dưới dạng được cung cấp / hiểu trực tiếp bởi hệ thống tệp cơ bản (có thể hỗ trợ rõ ràng đường dẫn dài hơn).Như mọi khi, hãy thận trọng khi thực hiện tại dấu nhắc lệnh để tránh vô tình xóa các tập tin hoặc thư mục mà bạn dự định để nguyên vẹn.

Nếu chúng tôi xem xét tổng quan về vấn đề này, bạn hãy nghiên cứu kỹ bài viết này từ thư viện Mạng nhà phát triển của Microsoft, Đặt tên tệp, Đường dẫn và Không gian tên để biết thêm thông tin về những gì đang diễn ra dưới mui xe.

Có một câu hỏi công nghệ cấp bách? Hãy gửi email cho chúng tôi theo địa chỉ [email protected] và chúng tôi sẽ cố gắng hết sức để trả lời.

Đề xuất: