如何在Windows中删除文件名过长的文件?
我老婆有几个文件和文件夹,不知怎么的,最后因为文件名太长,导致通过正常的方法或通过命令行删除不了(无法删除)。我相信由于文件夹结构的深度,文件名太长了。有人知道有什么好的工具可以清理这样的文件吗?
当你想完全删除一个目录,并且它包含长的路径时,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个。
在命令提示符中:
dir /X
这将以简称格式列出你的文件/文件夹。然后使用写好的简称来删除文件:
del LONGF~1.txt
我用了一个技巧来绕过 “全路径和文件名 "的长度限制,以便移动、复制或删除一些东西。那么你就有了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个字符,但当从本地驱动器根目录访问时,超出了总的文件路径长度。
可能不是最好的方法,我有兴趣看看别人想出了什么办法–
我有过一次这样的情况,我试了几样东西,都没有什么效果。我没有寻找一个好的工具,而是在Windows磁盘中重新启动,进入恢复控制台,并从那里删除它。
另外,刚刚为你做了一个谷歌,发现这个 - DelinvFile 看起来不错,但不能保证它。