我妻子有几个文件和文件夹,这些文件和文件夹以某种方式最终以正常方式或通过命令行导致无法删除(无法删除)的文件名出现。我相信由于文件夹结构的深度,文件名太长。有谁知道一个清理此类文件的好工具?

评论

这些文件是如何创建的?

抱歉,我对这个主题不了解,但是Windows是否应该处理这些文件? Eddins发布的内容不应该由Windows自动完成(甚至从资源管理器中获取)吗?

@ Mokubai-重复的问题应被标记为与此问题的重复,因为此问题较旧。

@cybermonkey:而且有更好的答案。

对于其他读者来说,我认为带CTRL + DELETE的7zip方法是最简单的方法...

#1 楼

如果您想完全删除包含长路径的目录,则robocopy做得非常好:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete


这是有效的,因为robocopy内部使用的是Unicode感知版本Win32函数,文件路径带有\?\前缀;这些函数的最大字符数为2¹⁶-1(32,767),而不是259。

您可能需要多次执行此过程才能删除所有文件。

评论


当文件系统中没有短名称(8.3)时有效。

– Antoine RODRIGUEZ
13年5月11日在10:43

这与我顽固的Windows Store缓存文件(拒绝删除)很好地配合使用。谢谢!

–萨米尔
2014年3月6日上午10:07

我必须在robocopy行中添加/ purge才能使它起作用,但是在那之后它成功了

–actionshrimp
2014年7月21日在10:12

Robocopy是让我陷入困境的原因,但是我从来没有想到使用Robocopy来使我摆脱困境。好答案!谢谢!

–杰伊·米肖(Jay Michaud)
14年7月25日在21:07

@SarahofGaia,我不好,它是2¹⁶-实际上是1

–天赋
2015年10月12日上午8:14

#2 楼

在命令提示符处:

dir /X


这将以短名称格式列出您的文件/文件夹。然后使用与写法完全相同的短名称删除该文件:

del LONGF~1.txt


评论


我喜欢那个,这是一个很好的横向思考。


09年9月23日在16:03

虽然我不能保证它在这种情况下会起作用,但是我已经多次使用它来删除结尾处包含无效字符的文件夹,这些文件夹使它们无法通过常规方式删除。

–爱丁斯(Will Eddins)
09年9月23日在16:03

这适用于当前目录中的文件和文件夹,但是如果您设法以某种方式发现自己位于路径太长的文件夹中,则将无济于事。例如,我当前在控制台中的路径太长,甚至无法通过dir或cd ...

–鲍勃森
2011-11-21 2:48



@Bobson如果您不能直接使用push代替。那对我有用。

– BadHorsie
13年11月19日在10:59

这不适用于Windows 10,显示的文件名是长文件名

–凤凰
17年9月9日在15:49

#3 楼

我按自己的方式进行进度,将每个连续的父文件夹重命名为“ 1”并尝试删除。您每次都在有效地缩短路径,而我直到最后终于能够删除整个目录结构(您可能想要或可能不想要)时,再也不需要工作超过4个或5个目录。您也可以从最后一个子文件夹执行此操作,然后上下移动。

评论


这是唯一对我有用的东西。此处和其他论坛中给出的所有其他技巧均无效。

–安德鲁·阿诺特(Andrew Arnott)
2010-12-26 1:23

是唯一行之有效的建议。

– Nestor Ledon
2014年9月24日19:54

这对我有用,对我有用的快捷方式是mv * 1 && cd1。当目录中有多个文件时,此方法不起作用,但那时rm -rf *通常可以解决问题。

–亚历山大·瓦尔维克(Alexander Varwijk)
15年5月20日在21:37

在Windows 10中无法执行此操作...重命名会引发“文件名过长”错误

–达维西
16年5月29日在20:09

这不仅为我解决了问题,而且还解释了我最初是如何解决该问题的。我必须拥有一个接近极限的路径,然后我重命名了一个父文件夹(将名称添加为“ backup Nov 2016 save”之类的名称),该文件夹将子文件夹中的文件超过了极限。很高兴知道起因和解决方案,即使我知道它也可以通过其他方式发生,但我认为这是发生在人们身上的一种常见方式。

–eselk
16年11月8日在20:46

#4 楼

在某些程序中,包括命令提示符(cmd.exe),可以通过在完整路径前加上\.\前缀来绕过文件长度限制,如下所示:

\.\C:\some directory\other directory\a file with long name


评论


在Windows 10中不起作用

–达维西
16年5月29日在20:09

谢谢,cmd在Win7 rm -rf \\ directoryname中对此起到了吸引力

– Philip Pryde
16 Dec 5'在22:32



#5 楼

我用来绕过“完整路径和文件名”长度限制以移动,复制或删除某些内容的一个技巧是,通过使用指向文件夹的映射驱动器号“中途”(或更多)“插入”来缩短它

所以你有c:\ some \ long \ path ... \ and \ 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”表示,它将在下次重启后无法幸存,以后会使您感到困惑。
完成后,别忘了取消共享。)

请记住,不必共享包含文件的文件夹,如果它已经在共享文件夹中,则可以只需将共享和嵌套文件夹映射到该文件附近的目标文件夹,就可以正常工作。

当我们意识到用户时,我不得不使用此技术在两台服务器之间进行大型robocopy在文件夹结构中已将驱动器映射得很深,因此它们可以从那里使用255个字符,但是从本地驱动器根目录访问时,该文件长度超过了文件总路径长度。

评论


您可以通过使用替代x来避免共享:C:\ Some \ first \ part \ of \\ long \ path,然后使用替代x删除驱动器:/ d

–mihi
14-10-27在19:33

不错的尝试,但是当您嵌套10个k个文件夹时,这是不可能的。

–朱利安·奈特(Julian Knight)
2015年9月11日在16:42

只要文件名的长度不超过260个字符(即使在驱动器的根部),该小技巧似乎也可以很好地起作用。

–斯蒂芬·钟(Stephen Chung)
16-6-4在8:36



您也不需要与net use显式共享任何文件夹,可以使用默认的管理员共享:net use x:\\ localhost \ c $ \ bar \ folders / persistent:no

– kapex
17年2月17日在22:25

#6 楼

我发现的最简单的方法是从ubuntu live CD引导。

作为替代方案,您可以在路径的一半创建一个共享文件夹,然后将网络驱动器映射到该路径,然后从中删除映射的文件夹(即使在同一台计算机上)

评论


有趣的是,Ubuntu Live CD多久可以帮助解决Windows问题^^

– Ivo Flipse
09年9月23日在16:07

我注意到,我自己,躲闪的网络尝试使用实时CD,文件系统问题尝试使用实时CD,损坏的分区表等。:-)


09-09-23 16:16

这是唯一对我有用的解决方案。我爱你,Linux! <3

–大卫·弗莱(David Frye)
2014年9月11日18:10

从Windows运行bash不需要Linux。 ;-)如果您正在运行Windows 10,只需安装“ Linux的Windows子系统”,基本上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

–达维西
16年5月29日在20:25

cygwin是在Windows中运行LINUX命令的另一种选择

–atom88
17年1月3日在21:19

#7 楼

重命名在其他位置剪切/粘贴文件的目录,然后将其删除。在这里工作。

或者如果您不想遇到麻烦,也可以从命令提示符处进行操作。

评论


这就像一个魅力。在那儿挖(对我来说,这是超级嵌套的node_modules文件夹),将其拖到桌面上并删除。一次冲洗几个文件夹时,请冲洗并重复。真是个令人讨厌的问题。

–nickb
2015年4月9日下午6:19

这对我不起作用-粘贴操作由于文件名太长而失败-剪切位置无关紧要。

–UpTheCreek
16年1月21日在13:02

#8 楼

可能不是最好的方法,我很想看看其他人提出的建议-

我曾经有过一次,尝试了几件事却没有任何运气。我没有寻找一个好的工具,而是带着Windows磁盘重新启动,进入了恢复控制台并从那里删除了它。第一次工作,真的很好!

还为您做了一个Google,发现它-DelinvFile看起来不错,但不能担保它。

编辑-警告,刚刚看到以上只是试用-可能不如我最初想象的好!

评论


免费的rimraf可以很好地工作,并且在所有其他想法都失败时起作用。它需要node.js

–朱利安·奈特(Julian Knight)
2015年9月11日下午16:43