2017年5月18日 星期四

[教學]在Windows 10中突破260字元的檔案路徑長度限制

出於無聊,將系統語言設定成英文 (雖然我是台灣人),因此圖片皆為英文版的畫面,說明文字將以「英文 (中文)」形式代表英文和其可能的中文,例如以下會出現的「File Explorer (檔案總管)」和「More info (更多資訊)」
英文很差,所以不保證中文翻譯會和實際情況完全相符

背景描述
由於小莫的許多專案擁有很長的名稱,為了分類也將這些專案放入越來越深的資料夾,「檔案路徑太長」之類的錯誤也漸漸變成家常便飯。到底,檔案路徑的長度限制是多少呢?
Windows使用的檔案系統 (File System) 格式為「NTFS」,稍微查了一下維基百科,發現NTFS可以允許的最長檔名長度 (絕對路徑+檔名) 是32767個字!
檔名或資料夾能取名到長度大於255也是很厲害了
不過對於路徑長度 (絕對路徑) 的支援
在NTFS檔案系統裡面竟然可以達到32767個字元!!!
不會吧?別騙我,怎麼可能小莫會把路徑長度搞到超過32767啦XD
而且在自己的Windows 10中做測試,實際的限制真的遠不及這個數字QQ
不到300字就開始出錯了XD (目前是244個字,請看右上角的記事本)
哦對了,新增資料夾的快速鍵是「Ctrl+Shift+N」XD

上網搜尋了許多資料,比較一致的看法是260個字元 (這合理多了!)
但是,既然NTFS可以支援,為甚麼Microsoft還是要在Windows中設下這個限制呢?
據說是相容性問題
畢竟在Windows 95的時代還是使用FAT這種限制255字的檔案系統的,如果突然放寬檔名長度限制,會令許多沒寫好的第三方軟體無法正常運作
是的,Microsoft為了讓Windows可以相容在舊版Windows上執行的軟體,真的下了很多功夫啊...... (畢竟,如果某軟體在舊版Windows正常執行,卻會在新版Windows中的某些情況下停止運作,使用者會怪罪到Windows身上啊) (汗

解決方法
您可能會說:「啊現在又不是Windows 95的時代了,誰會去管那老舊的Windows 95軟體呀!」
恩,某些程度上的確可以這麼說,而且軟體crash了是製作軟體的人的錯,不是Windows的錯哦~(咦?
所以呢,在Windows 10的1607版本之後,使用者已經可以自行移除這個檔名長度260字的限制了
所以,該怎麼設定呢?


  1. 在開始功能表中搜尋「regedit」並按下Enter鍵


  2. 在文字框中輸入「Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem」並按下Enter鍵,然後找到「LongPathsEnabled」這個項目


  3. 點兩下開啟「LongPathsEnabled」,並將文字框中的數值從「0」改為「1」,然後按下「OK」按鈕儲存設定


  4. 重新啟動電腦 (這不用再附截圖說明了吧?XD)


  5. 現在您的Windows 10應該可以支援長達32767個字的檔名了 \(^o^)/


很遺憾地
目前Windows 10本身的「File Explorer (檔案總管)」還不能支援長檔名檔案或資料夾的操作,因此直接使用「File Explorer」測試是看不出任何效果的

為了能讓您體驗使用長檔名的快感,小莫寫了一個程式,請從這裡下載

這個程式點兩下開啟就會開始執行以下動作:
  • 注意:有可能被防毒軟體誤判為惡意軟體,請放心執行 ^_^

按下「More info (更多資訊)」

按下「Run anyway (仍要執行)」
  1. 在「C:\Test」這個資料夾底下建立多達5000層的資料夾!(資料夾名稱從第一層開始依序為「1」、「2」、「3」......,最後一層資料夾名稱是「5000」),過程中會顯示進度


  2. 完成後會自動開啟「C:\Test」這個資料夾


  3. 探索看看,這「疊」資料夾到底有多深?XD


  4. 回到程式,輸入「Recover」後按Enter,程式會自動收拾剛剛弄出來的爛攤子(?),過程中會顯示進度。對了,記得關閉剛剛開啟的資料夾,不然程式會刪不掉它XD


  5. 執行完畢,相信您這時候已經體會到可以使用長檔名是多麼爽快的一件事!XD


如果您想要知道更多,可以參考這篇這篇,或者自行上網Google更多的資料
祝您有個美好愉快充滿驚喜的一天~ ^_^

2 則留言:

  1. 我覺得比較常會遇到的超長檔名通常是node.js,node_modules好幾層,在Windows上有時候就慘兮兮

    回覆刪除
    回覆
    1. 哈哈期待這種情況以後會改善囉~XD

      刪除

歡迎留言或問問題~
若您的留言中包含程式碼,請參考這篇
如果留言不見了請別慌,那是因為被google誤判成垃圾留言,小莫會盡快將其手動還原