2009-09-23 15:56:39 +0000 2009-09-23 15:56:39 +0000
203
203

如何在Windows中删除文件名过长的文件?

我老婆有几个文件和文件夹,不知怎么的,最后因为文件名太长,导致通过正常的方法或通过命令行删除不了(无法删除)。我相信由于文件夹结构的深度,文件名太长了。有人知道有什么好的工具可以清理这样的文件吗?

答案 (8)

428
428
428
2012-08-29 13:38:16 +0000

当你想完全删除一个目录,并且它包含长的路径时,robocopy做得非常好:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

这是因为robocopy内部[使用Unicode-aware版本的Win32函数,文件路径的前缀是\?当你想完全删除一个目录,并且它包含长的路径时,robocopy`做得非常好:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

这是因为robocopy内部使用Unicode-aware版本的Win32函数,文件路径的前缀是;这些函数的限制是2¹⁶-1 (32,767) 字符,而不是259个。

91
91
91
2009-09-23 16:01:40 +0000

在命令提示符中:

dir /X

这将以简称格式列出你的文件/文件夹。然后使用写好的简称来删除文件:

del LONGF~1.txt
53
53
53
2009-09-23 17:40:55 +0000

我循序渐进地进入路径,将每个连续的父文件夹重命名为 “1 "并尝试删除。你每次都会有效地缩短路径,而且我从来没有超过4、5个目录,直到最后能够删除整个目录结构(这可能是你想要的,也可能不是你想要的)。你也可以从最后一个子文件夹开始做,然后再往上或往下做。

13
13
13
2009-09-23 16:12:29 +0000

在一些程序中,包括Command Prompt (cmd.exe),你可以通过用\.在一些程序中,包括Command Prompt (cmd.exe`),你可以通过用作为前缀来绕过文件长度限制:

\.\C:\some directory\other directory\a file with long name
13
13
13
2012-02-21 17:18:15 +0000

我用了一个技巧来绕过 “全路径和文件名 "的长度限制,以便移动、复制或删除一些东西。那么你就有了c:\somelong路径…………和foobarolders\oldfiles\myoldfile.txt.然后将一个任意的驱动器字母映射到路径的某处,这样路径的第一大块就会变成只有几个字符长。先决条件–文件夹必须是在共享文件夹中(如果是在服务器上,可能已经是共享文件夹了,我就是在这个位置上做的),如果还不是,那就在路径中选一个文件夹共享。根据你的环境和偏执的程度,只要NTFS权限合理限制,允许每个人修改共享的权限。如果你愿意,只允许自己的账户有修改权限就可以了。

现在到共享文件夹或里面的共享文件夹中去共享,或者使用下面的命令行。假设你的共享文件夹 "foo "为 "fooshare",那么你可以做

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

,现在X:驱动器直接指向该共享里面的文件夹 "folder",所以 "x:oldfiles\myoldfile.txt "现在是相当简短的。请记住,你不一定要共享包含文件的文件夹,如果文件已经在共享文件夹中,你可以通过共享和嵌套的文件夹映射到文件附近的目标文件夹,这样就可以了。

我曾经在两台服务器之间使用过这种技术,当我们意识到用户在文件夹结构中映射了很深的驱动器,所以他们能够使用255个字符,但当从本地驱动器根目录访问时,超出了总的文件路径长度。

9
9
9
2009-09-23 15:59:00 +0000

我找到的最简单的方法是从ubuntu live CD启动。

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

5
5
5
2009-09-23 19:39:20 +0000

将文件剪切/粘贴的目录重命名到别的地方,然后删除。

或者直接从命令提示符中删除,如果你不想麻烦的话。

1
1
1
2009-09-23 16:00:00 +0000

可能不是最好的方法,我有兴趣看看别人想出了什么办法–

我有过一次这样的情况,我试了几样东西,都没有什么效果。我没有寻找一个好的工具,而是在Windows磁盘中重新启动,进入恢复控制台,并从那里删除它。

另外,刚刚为你做了一个谷歌,发现这个 - DelinvFile 看起来不错,但不能保证它。