Windows

MS Windows 問題 - “文件名或副檔名太長”

  • February 12, 2015

我在我的幾台機器上執行 Microsoft Windows。我不知道是否有很多人知道作業系統中的這個問題,但你不能有很長的文件名,據我所知 Linux 可以有更長的名稱,我從來沒有在我的 Linux 機器上遇到過這個問題。

無論如何,每當將文件夾和文件複製到備份驅動器時,我都會遇到問題。我手動備份我的數據,查找和更改文件名,這非常非常繁瑣。

是否有軟體工具可以縮短在 Windows 上發現過長的文件夾或文件名?

我有驅動器映像複製軟體,它可以完成這項工作,但以我不喜歡的方式,加上如果名稱太長而無法複製,移動文件有時會變得很麻煩。

在將深/長名稱文件結構從一台機器移動到另一台機器時,您通常可以將文件壓縮到存檔中以繞過長度限制。

只是提到一個我在這裡還沒有看到的技巧。

以這個文件為例:

C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

此完整文件路徑的長度為 290 個字元。shell(Windows 資源管理器)和大多數命令行實用程序可能不會讓您觸摸它。

像這樣使用subst命令:

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

現在您可以訪問(並刪除、移動等)該文件:

X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

現在這個文件名只有~235個字元左右,所以你不會再遇到“文件名太長”的問題了。

在 Windows API 中,有一個臭名昭著的常量,稱為MAX_PATH. MAX_PATH 為 260 個字元。NTFS 文件系統實際上支持最多 32,767 個字元的文件路徑。您仍然可以通過訪問 Unicode(或“寬”)版本的 Windows API 函式以及在路徑前加上\\?\.

MAX_PATH很久以前在 Windows 世界中是一成不變的。我認為這與當時的 ANSI 標準有關……但這是微軟現在很難改變的事情之一,因為現在我們有成千上萬的程序和應用程序,包括微軟自己編寫的一些程序和應用程序,它們使用MAX_PATH如果常數突然改變,將會以奇怪的新方式失敗。(緩衝區溢出、堆損壞等)

引用自:https://serverfault.com/questions/15357