Windows

克服 Windows 中的最大文件路徑長度限制

  • April 16, 2017

我們的一位客戶習慣性地使用很長的路徑名(幾個嵌套文件夾,名稱很長),我們經常遇到“使用者教育問題”,以便將路徑縮短到少於 260 個字元。

是否有可用的技術解決方案,我們是否可以在 Windows 7 和 Windows 2008 R2 中輕按某種開關,說“是的,忽略這些歷史問題,讓 +260 字元路徑名起作用”。

PS 我已閱讀並完全不了解命名文件、路徑和命名空間

方法就在那裡,但在微軟重新編碼文件瀏覽器小元件之前,我們幾乎都被這個老問題困住了。這是次優的,但這就是它的工作原理。

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

以這個文件為例:

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/232986