如果您使用Windows的時間足夠長,特別是使用名稱較長的資料夾和檔案,您將遇到一個奇怪的錯誤:Windows將報告資料夾路徑或檔名太長,無法移動到新目標,甚至無法刪除。怎麼回事?
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
您遇到的問題是兩個系統的不幸交叉,在這種情況下,會產生錯誤。為了準確地瞭解錯誤的來源,我們需要在深入研究解決方案之前深入瞭解長檔名(LFN)的歷史以及Windows如何與它們互動。
在Windows95中,透過底層的MS-DOS體系結構引入了長檔名。新的LFN系統允許檔名和目錄名最多255個字元。這是以前的檔案名系統的一個受歡迎的擴充套件,通常稱為8.3檔名,因為名稱被限制為8個字元和3位副檔名,但也被稱為短檔名(SFN)。你可以想象,當時仍然有很多基於DOS的應用程式在使用,而要讓新的lfn和舊的sfn更好地相互配合,還有很多麻煩。如果你曾經遇到過一張舊的軟盤或CD-ROM,上面有奇怪的被截斷的檔案(比如abcdef~1.txt),那麼這個檔名是由一些SFN使用舊的應用程式從一些較長的、不受支援的LFN(比如wen jian efghijk.txt檔案).
然而,我們離上世紀90年代中期還有很長的路要走,而且整個檔名過長的問題(大部分)已經被徹底解決了。如果您執行的是過去10年的Windows版本,您可能從未遇到過檔名長度衝突,就像我們在DOS/windows95時代遇到的那樣。也就是說,正如您在磁碟清理專案中發現的那樣,我們仍然會遇到問題。但為什麼呢?如果Windows的長檔案名系統支援資料夾和每個元件最多255個字元的檔名,那麼您將遇到什麼樣的牆?我們不能責怪NTFS(大多數現代Windows機器使用的檔案系統),因為NTFS將支援資料夾和檔名的連結,總路徑長度可達32767個字元。這遠遠超過了大多數使用者需要的典型目錄結構。
在LFN/NTFS系統之上的Windows堆疊中存在一個人為的限制:MAX\u PATH變數。MAX\u PATH變數指定Windows中完整的目錄結構的總字元數不能超過260個,包括驅動器號、冒號、反斜槓和結尾處的空反衝。因此,您只有一個256個字元的潛在實際最大路徑,例如C:\your-256-character-PATH\。
因此,當您清理計算機時發生的情況是,您有一個路徑已經很長的目錄(可能是因為資料夾名很長,檔名很長,或者兩者都很長),當您試圖將其中一個或多個目錄移動到另一個路徑很長的目錄中時,路徑名的總長度超過了MAX\ U path變數施加的260個字元的限制。
現在,你可能在想“啊哈!我們只需更改MAX\u PATH變數就可以解決問題!“唉,沒那麼簡單。MAX\u PATH變數不僅本質上是硬編碼到Windows中的,而且即使您經歷了修改它的巨**煩,您最終也會破壞太多,這是不值得的。太多的應用程式期望path變數是Windows長期指定的變數。我們不能在不造成巨大混亂的情況下改變它。
你還剩下什麼?最簡單的解決方案就是編輯路徑資料。例如,如果您有大量已儲存的文章,而用於從web儲存這些文章的應用程式/擴充套件程式建立了一個目錄,該目錄是文章的完整標題+文章導語,那麼檔名本身就是文章的完整標題+文章導語,只需一次儲存,就可以達到或超過最大路徑。編輯那些巨大的資料夾和文章標題到一個更合理的大小是一個簡單的方法來解決這個問題。
如果有大量檔案的路徑很長,並且您不想全部編輯這些檔案(或者如果您想刪除一大堆舊目錄,這些目錄太長,在受到MAX\u path變數限制時Windows無法處理),那麼可以使用命令列解決方法。即使Windows受到MAX\u PATH變數的限制,Windows工程師也意識到,在某些情況下,使用者需要處理更長的路徑名。因此,windowsapi有一個處理超長路徑的函式。
為了利用這個API並在笨拙的資料夾/檔名上使用命令列工具,只需在目錄名後面附加幾個額外的字元。例如,如果您有一個要刪除的龐大目錄結構(但在嘗試刪除時由於路徑長度而收到錯誤),則可以從以下位置更改命令:
rmdir c:\documents\some-really-super-long-folder-name-scheme\
收件人:
rmdir \\?\c:\documents\some-really-super-long-folder-name-scheme\
關鍵是增加了\ \?\檔案路徑開始之前的部分;這指示Windows忽略MAX\u path變數施加的限制,並與您剛才提供的路徑互動,該路徑由基礎檔案系統直接提供/理解(它可以明顯支援較長的路徑)。像往常一樣,在命令提示符下要小心,以避免意外刪除要保持原樣的檔案或目錄。
如果我們對這個問題的概述讓您感到好奇,那麼一定要深入閱讀這篇來自Microsoft開發者網路庫的文章,命名檔案、路徑和名稱空間,以獲得有關引擎蓋下發生的事情的更多資訊。
有急迫的技術問題嗎?給我們發郵件詢問@tl80.cn我們會盡力回答的。
...icrosoftword例項時,它會被放在RAM中以便快速訪問。這就是為什麼擁有更多的RAM可以讓您同時執行多個程式的原因(請檢視我們的RAM指南以瞭解更多的後臺資訊)。 ...
...這就提出了一個問題:WinSxS中到底安裝了哪些檔案,以及為什麼這些檔案如此龐大。Web搜尋和論壇中充滿了有關此資料夾的問題。讓我們揭開WinSxS的祕密和正確的管理方法。 ...
...比較,看看是否匹配。 相關報道:windows10的最新版本是什麼? 如果您需要向其他人報告此資訊,Windows提供了一種簡便的方法,可以將系統規範(包括“安裝日期”)快速複製到剪貼簿。要執行此操作,請單擊“Windows規範”列...
windows10提供了一個不錯的預設桌布選擇,但是如果你決定使用自定義桌布,很容易忘記它們。如果您想再次使用預設影象,下面介紹如何查詢和使用它們。 隱藏桌布的案例 問題是:在新安裝的Windows中,設定>個性化設定>...
...覽器,前往谷歌驅動器,並開啟你想要複製的資料夾。在Windows上按Ctrl+A或在Mac上按Command+A選擇所有檔案,右鍵單擊,然後單擊“**副本” googledrive為您選擇的每個檔案**一個副本,將其放置在當前資料夾中,並在每個專案的名稱...
...你不應該做任何事情。 那很好,但是如果你不想等呢?為什麼Windows不告訴我們是哪個“驅動程式或服務”導致了這個問題?windows10確實知道這個問題,但是它沒有在這裡顯示它。你必須從日誌檔案中找出它並自己修復它。下面...
Windows 10上的許多應用程式現在都是沒有傳統.exe檔案的Windows應用商店應用程式。雖然這些應用程式的工作方式有些不同,但您仍然可以使用傳統的啟動資料夾在啟動時啟動它們中的任何一個。 使用啟動設定(僅適用於某些應...
...因呢? 什麼是系統32(system32)? 相關:什麼是DLL檔案,為什麼我的電腦上少了一個? System32目錄包含Windows系統檔案,包括程式使用的.DLL庫檔案和作為Windows一部分的.EXE程式實用程式。雖然您在這裡找到的大多數檔案都是Windows作...
...在新電腦上安裝這些檔案,所以你不需要它們。 相關:為什麼不能將程式資料夾複製到新的Windows系統(以及何時可以) Program Files資料夾包含已安裝應用程式的檔案。你通常不能把這些資料夾複製過來。您必須從頭開始重新安...