如何在Windows中删除文件名过长的文件?[重复]


202

这个问题已经在这里有了答案:

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


这些文件是如何创建的?
尼克,

抱歉,我对这个主题不了解,但是Windows是否不应该处理这些文件?Eddins张贴的内容不应该由Windows自动完成(即使从资源管理器中完成)吗?
Stefanos Kalantzis

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

1
@cybermonkey:它有一个更好的答案。
Ellesedil'3

对于更多读者而言,我认为CTRL+DELETE7zip方法是最简单的方法...
Christian Gollhardt

Answers:


426

当您想完全删除一个目录并且该目录包含长路径时,robocopy它做得很好:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

之所以可行,是因为robocopy在内部使用Win32函数的Unicode感知版本,并且\\?\文件路径带有前缀;这些函数的字符数限制为2 1 -1(32,767),而不是259。

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


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

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

1
我必须在robocopy行中添加/ purge才能使此功能起作用,但此后就成功了
actionshrimp 2014年

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

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

91

在命令提示符下:

dir /X

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

del LONGF~1.txt

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

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

1
这适用于当前目录中的文件和文件夹,但是如果您设法以某种方式找到自己路径太长的文件夹,则将无济于事。例如,我当前在控制台中的路径太长,甚至不能dircd ..
Bobson

1
@Bobson如果您不能dir使用它pushd。那对我有用。
BadHorsie

4
这不能与Windows 10的工作,所显示的文件名是漫长的
Loenix

53

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


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

是唯一行之有效的建议。
Nestor Ledon 2014年

这对我有用,帮助我的捷径是mv * 1 && cd 1。当目录中有多个文件时,此方法不起作用,但rm -rf *通常可以解决问题。
亚历山大·瓦维克

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

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

13

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

\\。\ C:\ some目录\ other目录\长文件

3
在Windows 10中
不起作用

谢谢,cmd在Win7中发挥了作用rm -rf \\directoryname
Philip Pryde

13

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

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

然后将任意驱动器号映射到该路径上的某个位置,以使路径的第一块长度只有几个字符。前提条件-文件夹必须位于共享文件夹中(如果它位于服务器上,则可能已经存在,这是我需要这样做的位置),如果尚未存在,则在路径中的某个位置选择一个文件夹并分享。根据您的环境和妄想症级别,只要NTFS权限受到合理限制,所有人都可以修改对共享的访问。如果需要,仅允许您自己的帐户修改权限。

现在转到共享文件夹或其中的一个共享文件夹,或使用命令行,如下所示。假设您将文件夹“ foo”共享为“ fooshare”,则可以

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

X:驱动器现在直接指向该共享内部的文件夹“文件夹”,因此“ x:\ oldfiles \ myoldfile.txt”现在很短。

(“ / persistent:no”表示这将在下次重新启动后继续存在,并在以后使您感到困惑。完成操作后,请不要忘记取消共享文件夹。)

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

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


4
您可以使用subst x: C:\Some\first\part\of\the\long\pathsubst x: /d
–mihi

1
不错的尝试,但是当您嵌套10个k个文件夹时,这是不可能的。
朱利安·奈特

subst伎俩似乎运作良好,只要文件名不是那么只要使它即使在驱动器的根去了260个字符。
Stephen Chung

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

9

我发现的最简单的方法是从ubuntu live CD启动。

或者,您可以在路径的中途创建一个共享文件夹,然后将网络驱动器映射到该路径,然后从映射的文件夹中进行删除(即使在同一台计算机上)


17
有趣的是,Ubuntu Live CD多久可以帮助解决Windows问题^^
Ivo Flipse 09/09/23

1
我注意到自己,狡猾的网络尝试了现场CD,文件系统的问题,尝试了现场CD,损坏分区表等等,等等:-)
山口

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

1
从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档案中的数万个二进制软件包中的大多数! “这是一个恰好是在Windows上运行一个非常完整的Linux开发环境。zdnet.com/article/ubuntu-and-bash-arrive-on-windows-10
Dawesi

cygwin的是用于运行在Windows LINUX命令另一替代
atom88

5

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

或者,如果您不想遇到麻烦,也可以仅从命令提示符下输入。


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

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

1

可能不是最好的方法,我很想知道其他人的想法-

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

此外,刚刚为您做了一个Google,发现了这一点-DelinvFile看起来不错,但不能担保。

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


免费的rimraf可以很好地工作,并且在所有其他想法都失败时起作用。它需要node.js
朱利安·奈特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.