2-02 10,126
從本月起我們的成品可能不再遵從較為嚴格的路徑長度限制。這篇文章將簡單介紹如何在 Windows 系統中啟用長路徑功能。
Windows 系統中較為保守的最大路徑長度限制一直為人所詬病。在 Windows 系統的默認配置下,最大路徑長度為 MAX_PATH,定義為 260 個字符。除去路徑開頭的驅動器號、冒號、反斜杠以及路徑末尾的終止字符,實際可用的部分只有 256 個字符。而在 Windows 的文件資源管理器中,由於一些額外保留字符限制,實際可使用的路徑長度會更短一些。
256 個字符看似不少,但在我們的命名規範下,項目目錄名、片名、特典名、CD 目錄名、歌曲名,這些字段如果有多個較長的部分累加在一起,就很可能超過長度限制。
長年以來,我們都在與路徑長度限制進行抗爭,壓縮各個字段的命名,盡最大努力壓縮到 240 個字符之內。但是在 2024 年的今天,我們還是得說,240 個字符真的是太少啦!
一方面,即使我們保證壓縮到 240 個字符之內,也無法保證在觀眾本地就不超過限制,因為顯然觀眾並不一定下載到磁盤根目錄,並且下載時多個 10-20 字符的前綴路徑也很常見;另一方面,從長遠角度來看,製作一些大合集項目時,即使我們每個字段長度都壓縮到最小,有時也不可避免會超過限制。
針對最大路徑長度限制的問題,Windows 給出了一個不算完整的解決方案:
從 Windows 10 版本 1607 開始,可以啟用長路徑功能。
以下有三種啟用長路徑的方法,可以根據自身情況進行選擇。
1. 通過 PowerShell 進行設置
(1). 使用管理員模式啟動 PowerShell
(2). 執行以下命令
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
-Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
(3). 重啟計算機
2. 通過註冊表文件 (.reg) 進行設置
(1). 新建一個 .txt
文本文件
(2). 將以下命令複製到文件中
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001
(3). 將文件後綴名改為 .reg
(4). 雙擊 .reg
文件執行
(5). 重啟計算機
3. 通過組策略編輯器進行設置 (需要 Windows 專業版)
(1). 使用 Windows鍵 + R
組合鍵調出 運行
窗口,輸入 gpedit.msc
啟動組策略編輯器
(2). 按以下路徑選擇配置項,開啟長路徑功能
英文路徑:
Computer Configuration > Administrative Templates > System >
Filesystem > Enable Win32 long paths
中文路徑:
計算機配置 > 管理模板 > 系統 > 文件系統 > 啟用 Win32 長路徑
(3). 重啟計算機
開啟長路徑功能之後,常規的 BT 軟件就可以正常下載超長路徑的種子了。不過需要注意的是,並非所有應用程序都支持長路徑,比如 Windows 自帶的文件資源管理器,即使開啟長路徑功能也無法處理超長路徑的文件。
如果有編輯超長路徑文件的需求,可以使用第三方的更強大的工具,比如 One Commander。
- 在 Windows 系統中啟用長路徑功能 - 2024年2月2日
- VCB-Studio 2024 冬季組員招募(已截止) - 2024年1月1日
一直都開着。甚至開了很多年,但是總感覺沒有用!年輕時習慣把學習資料一層一層的隱藏,導致有時候有些軟件就會報個錯
原來是【不過需要注意的是,並非所有應用程序都支持長路徑,比如 Windows 自帶的文件資源管理器,即使開啟長路徑功能也無法處理超長路徑的文件。】
😯
回復給哈姆: 需要應用程序適配,系統支持長路徑,並且應用程序開啟 longPathAware 元素才行;
最大路徑長度限制 – Win32 apps | Microsoft Learn: https://learn.microsoft.com/zh-cn/windows/win32/fileio/maximum-file-path-limitation?tabs=registry
W7系統有辦法嗎 在線等 挺急的
好奇win為什麼限制這個長度呀,是系統的什麼功能用不了長路徑嗎
回復給a244115379:
向下兼容遺留下的東西而已,可能是上世紀為了省內存定下來的。
Linux 也有類似的,Btrfs 為了兼容 EXT4 的文件名長度限制硬編碼為 255 Bytes,實際上注釋也寫了可以更長。
https://github.com/torvalds/linux/blob/0c7030038e6106711c5d0b237c980905dd3244ec/include/uapi/linux/btrfs_tree.h#L22
目前下載番劇還沒有遇到這個問題欸,安裝qBitttorrent的時候有個選項是解除WINDOWS長路徑限制,不知道有沒有用
❓
壞了,我掛在linux的nas上下的,沒治(悲
只能靠自己人肉改名字了哼啊啊啊啊啊啊啊
回復給Mr.win7: linux的限制不一樣吧
回復給逞零詞: Linux限制更嚴格,幾乎絕大多數的文件系統都是路徑總長度256字符,而且沒有任何解決方案。
256這個值是硬編碼在內核里的。我對內核不太熟,聽說就算鐵頭娃改成更大的值去自行編譯內核,也會因為inode的數據結構固定的原因實際上無法使用。
所以只能依賴bt軟件本身去重命名文件了,基本上就是等報錯再人肉改了。
回復給Mr.win7: 錯誤的,是文件名而不是總長度,長度是定義在文件系統而不是在內核,如ext4對於名字長度是一個8bit的字段。
在 Linux 上:文件名的最大長度為 255 個字節。 文件名和路徑名組合的最大長度為 4096 個字節。 此長度與操作系統支持的 PATH_MAX 匹配。 字符的 Unicode 說明可能佔據幾個字節,所以組成路徑名和文件名最大字符數會有所不同。 實際限制是路徑和文件組件中的字節數,可能對應於相同字符數。
回復給ΤΑΤ: 回去仔細重讀了一下,是我搞混了,對不起。。。你是對的。太丟臉了
是文件名的長度難以通過修改文件系統下的名字長度做修改。所以主要是文件名長度在linux下不好調整。
最早注意到是用POT播放番劇的時候 因為名稱太長結果不能正確加載播放列表 顯示的文件名也是亂碼哈哈
太感謝了 這個幫大忙了 經常遇到路徑太短 無法複製粘貼
感謝科普,分享的One Commander好用又好看
感謝!
這個教程等好久了,之前經常遇到這個問題,有人說安裝個Python能治,結果沒用
回復給az6338890: https://docs.python.org/zh-cn/3.11/using/windows.html#removing-the-max-path-limitation
印象中python安裝包確實會在安裝時給沒有啟動長路徑的電腦加一個啟動長路徑的選項,沒有這個選項說不定是已經開啟過了
回復給tasty0tomato: 我說怎麼我的長路徑已經被開啟了,原來是這樣啊。
回復給az6338890: 剛發現qBittorrent安裝時也會默認啟用長路徑 😆
支持!