題 如何在Windows中刪除文件太長的文件? [重複]


這個問題在這裡已有答案:

我的妻子有幾個文件和文件夾,不知何故最終有文件名導致它們通過正常方式或通過命令行無法刪除(無法刪除)。我認為由於文件夾結構的深度,文件名太長。有沒有人知道清理像這樣的文件的好工具?


195
2017-09-23 15:56


起源


這些文件是如何創建的? - Nick
對不起我對這個主題的無知,但Windows不應該處理這些文件?不應該通過Windows自動完成Will Eddins發布的內容(即使是來自資源管理器)? - Stefanos Kalantzis
@Mokubai-重複的問題應該標記為重複的問題,如 這個問題比較老了。 - cybermonkey
@cybermonkey:它有一個更好的答案。 - Ellesedil
對於進一步的讀者, 7zip方法 CTRL + DELETE 在我看來,這是最簡單的方法...... - Christian Gollhardt


答案:


當你想要完全刪除目錄並且其中包含長名稱的文件時,robocopy做得非常好:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /s /mir
rmdir empty_dir
rmdir the_dir_to_delete

這是因為內部的robocopy 使用支持Unicode的Win32函數版本 \\?\ 文件路徑的前綴;這些函數的字符數限制為2¹⁶-1(32,767)而不是259。

您可能需要多次執行此過程才能刪除所有文件。


416
2017-08-29 13:38



當文件系統中沒有存儲短名稱(8.3)時有效。 - Antoine RODRIGUEZ
這與我頑固的Windows商店很好地配合 緩存文件 拒絕被刪除。謝謝! - Samir
我必須添加/清除robocopy線才能使其正常工作,但之後它就完成了 - actionshrimp
Robocopy是讓我陷入困境的原因,但我從來沒有想過使用Robocopy讓我擺脫困境。很棒的答案!謝謝! - Jay Michaud
@SarahofGaia,我的壞,實際上是2¹⁶ - 1 - Benoit


從命令提示符:

dir /X

這將以短名稱格式列出您的文件/文件夾。然後使用與寫入完全相同的短名稱來刪除文件:

del LONGF~1.txt

90
2017-09-23 16:01



我喜歡那個,這是一個很好的橫向思維。 - Col
雖然我不能保證它在這種情況下會起作用,但我已經多次使用它來刪除最後有無效字符的文件夾,這些文件夾無法通過正常方式刪除。 - Will Eddins
這適用於當前目錄中的文件和文件夾,但如果您以某種方式設法找到自己 內 路徑太長的文件夾,無濟於事。例如,我目前在一個太長的路徑中的控制台,甚至不能 dir 要么 cd ..。 - Bobson
@Bobson如果你不能 dir 使用 pushd 代替。這對我有用。 - BadHorsie
這不適用於Windows 10,顯示的文件名是長文件名 - Loenix


我繼續前進到路徑中,將每個連續的父文件夾重命名為“1”並嘗試刪除。你每次都有效地縮短了路徑,我從來沒有超過4或5個目錄,直到我終於能夠刪除整個目錄結構(可能是你想要的,也可能不是你想要的)。您也可以從最後一個子文件夾執行此操作,並按上下工作。


52
2017-09-23 17:40



這是唯一對我有用的東西。這里以及其他論壇中提供的所有其他技巧都不起作用。 - Andrew Arnott
樂意效勞... - joeqwerty
是唯一一個奇怪的建議嗎? - Nestor Ledon
在Windows 10中無法執行此操作...重命名會將“filename to long”錯誤拋出 - Dawesi
這不僅解決了我的問題,而且還解釋了我最初是如何解決這個問題的。我必須有一個接近極限的路徑,然後我重命名了一個父文件夾(添加了類似“備份2016年11月保存”的名稱),這會推動子文件夾中的文件超過限制。很高興知道原因和解決方案,即使我知道它也可能以其他方式發生,我認為這是人們常見的方式。 - eselk


在某些程序中,包括命令提示符(cmd.exe),你可以通過前綴完整路徑來繞過文件長度限制 \\.\ 像這樣:

\\。\ C:\某個目錄\其他目錄\具有長名稱的文件

13
2017-09-23 16:12



在Windows 10中不起作用 - Dawesi
謝謝,cmd在Win7中運用了這個魅力 rm -rf \\directoryname - Philip Pryde


我用來繞過“完整路徑和文件名”長度限制以移動,複製或刪除某些東西的技巧是通過“中斷”(或更多)來縮短它 使用映射的驅動器號指向路徑下的文件夾

所以你有c:\ some \ long \ path ... \和\ foo \ bar \ folders \ oldfiles \ myoldfile.txt。

然後將任意驅動器號映射到路徑上的某個位置,以便路徑的第一個塊只變為幾個字符長。 先決條件 - 文件夾必須位於共享文件夾中(如果它位於服務器上,可能已經存在,我需要這樣做),如果還沒有,則在路徑中的某處選擇一個文件夾並分享。根據您的環境和偏執級別,只要NTFS權限具有合理的限制,允許每個人修改對共享的訪問權限。如果需要,只允許修改權限僅限於您自己的帳戶。

現在轉到共享文件夾或其中的一個文件夾並共享它,或使用命令行,如下所示。假設您將文件夾“foo”分享為“fooshare”,那麼您可以這樣做

net use x: \\mycomputername\fooshare\bar\folders /persistent:no

並且X:驅動器現在直接指向該共享內的文件夾“folders”,因此“x:\ oldfiles \ myoldfile.txt”現在非常短。

(“/ persistent:no”表示在下次重啟時無法生存,以後會讓您感到困惑。 完成後別忘了取消共享文件夾。)

請記住,您不必共享包含該文件的文件夾,如果它已經位於您可以映射的共享文件夾中 通過 共享和嵌套文件夾到目標文件夾  到文件,這工作正常。

當我們意識到用戶已經在文件夾結構中深度映射驅動器時,我不得不使用這種技術在兩個服務器之間進行大規模的機器人復制,因此他們可以從那裡使用255個字符,但是這超過了總文件路徑長度從本地驅動器根目錄訪問時。


13
2018-02-21 17:18



你可以通過使用來避免共享 subst x: C:\Some\first\part\of\the\long\path 然後刪除驅動器 subst x: /d - mihi
很好的嘗試,但當你有10個k的文件夾嵌套時,這是不可能的。 - Julian Knight
該 subst 訣竅似乎運作良好,只要文件名不是 所以 即使在驅動器的根部也能超過260個字符。 - Stephen Chung
您也不需要顯式共享任何文件夾 net use,您可以使用默認的管理員共享: net use x: \\localhost\c$\bar\folders /persistent:no - kapex


我發現最簡單的方法是從ubuntu live CD啟動。

作為替代方案,您可以在路徑中間創建一個共享文件夾,然後將網絡驅動器映射到該文件夾並從映射文件夾中執行刪除(即使在同一台計算機上)


9
2017-09-23 15:59



有趣的是,Ubuntu Live CD有助於解決Windows問題^^ - Ivo Flipse♦
我注意到自己,狡猾的網絡嘗試了現場CD,文件系統問題嘗試了現場光盤,腐敗的分區表等等.-) - Col
這是唯一對我有用的解決方案。我愛你,Linux! <3 - David Frye
從Windows運行bash不需要Linux。 ;-)另外,如果你正在運行Windows 10只是安裝“Windows子系統Linux”基本上Windows使用ubuntu api鉤子來完成工作... utils包括“apt,ssh,rsync,find,grep,awk,sed,排序,xargs,md5sum,gpg,curl,wget,apache,mysql,python,perl,ruby,php,gcc,tar,vim,emacs,diff,patch,以及Ubuntu檔案中數以萬計的二進制包中的大部分! “這是一個非常完整的Linux開發環境,恰好在Windows上運行。 zdnet.com/article/ubuntu-and-bash-arrive-on-windows-10 - Dawesi
cygwin是在Windows中運行LINUX命令的另一種選擇 - atom88


重命名將文件剪切/粘貼到其他位置的目錄,然後將其刪除。在這里工作。

或者只是從命令提示符,如果你不想經歷麻煩。


5
2017-09-23 19:39



這就像一個魅力。在那裡挖掘(對我來說,它是超級嵌套的 node_modules 文件夾),將其拖到桌面並刪除。一次上幾個文件夾,沖洗並重複。多麼令人討厭的問題。 - nickb
這對我來說不起作用 - 由於文件名長,粘貼操作失敗 - 無論切割它的位置都無關緊要。 - UpTheCreek


可能不是最好的方式,我有興趣看看其他人想出什麼 -

我曾經有過這個,我嘗試了一些沒有運氣的東西。我沒有找到一個好工具,而是重新啟動了Windows磁盤,轉到恢復控制台,然後從那裡刪除它。第一次工作,真的很好!

此外,只是為你做了一個谷歌,發現了這個 - DelinvFile 看起來很好,但不能保證。

編輯 - 警告,剛看到上面只是一個試驗 - 也許不如我初想的那麼好!


1
2017-09-23 16:00



當所有其他想法都失敗時,免費的rimraf工作正常並且有效。它需要node.js - Julian Knight