Windows系统的磁盘系统上,有个传统,就是一个路径最长为256个字符。虽然现代的NTFS文件系统支持的路径文件长度已经远远超过了这个数值,但因为各种历史遗留原因和兼容性原因,Windows系统却不能原生彻底支持这种长路径。于是,我们经常会遇到这样一种情况,就是不小心一些软件创建了一个无比长的路径,然后这个目录就成了牛皮癣……无法删除,一旦删除就会出现这种提示:
源路径太长。
源文件名长度大于文件系统支持的长度。请尝试将其移动到具有较短路径名称的位置,或者在执行此操作前尝试将其重命名为较短的名称。
源文件名长度大于文件系统支持的长度。请尝试将其移动到具有较短路径名称的位置,或者在执行此操作前尝试将其重命名为较短的名称。
以下这个截图是由于某数据恢复软件因为未知的原因(类似死循环?)所创建的一个无比深的路径。
其它经常可能出现此问题的场合还有很多,比如NodeJS的npm模块安装,由于npm的模块采用嵌套的机制来处理引用,因此一个复杂的模块其路径就会无比长,这种问题经常发生(顺便吐槽一下这种模块引用机制,真是蛋疼)。
由于无法用自管管理器直接删除这种长路径,因此必须要用第三方工具来额外调用新的支持长路径的文件系统API。
在百度上查询的话,你会发现大多数文章介绍的都是使用Robocopy来处理这种长路径。这种处理模式下robocopy带有/purge
参数,这个参数的意思是删除目标目录中多余的目录。因此这个模式处理的流程是:
- 创建一个空的临时目录,比如为 C:\Temp:md c:\temp\
- 使用robocopy来处理目标目录: robocopy c:\temp c:\要删除的目录 /purge
- 如果没有删除,清空,可以重复第二步操作
带有/purge
参数的robocopy会将要删除目录中的多余目录全部干掉,这种情况下也就是长路径目录。
除此以外,还有一些工具,比如LongPathTool,其实内部也是使用robocopy来进行操作的。
robocopy使用起来有点麻烦,而且其实并不一定始终有效。比如在此例中,robocopy就会自己崩溃,完全无法删除。
在试了很久后,我终于找到了一个灰常简单的方法搞定他们:
那就是用7-Zip的文件管理器,在文件管理器中直接按Shift+Delete删除,可以直接搞定这种蛋疼的长路径目录……
亲测有效
powershell (admin)
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1
源路【经】太长
不知道 win10 解除这个限制了没
我这就是win10。。
【新建文件夹需要占用硬盘空间吗?路径长度有没有限制?】肖元安:哈哈,这么屌的问题,我来怒答一番。 首先为了防止no zuo no die,我决定在XP虚拟机里面测试,如图所示 : 创建一个虚拟硬盘: 把该硬盘格式化成NTFS分区的(大多数电… http://zhi.hu/qgrj(分享自 @知乎)
我第一次觉得7z很牛逼,是以前用过什么所谓的极速隐藏文件的软件,实质就是把文件移到名为类似recycleaaa这样的文件夹中。然后,我从7z可以直接进入这个文件夹……然后我就再也不用这样的软件了……