本鱼拟成立工作室承接项目开发/软件定制/云设施开发运维/办公设备技术支持等,如您有相关需求,欢迎来询 | ::博客文章推荐::

干掉“源路径太长”的目录

: 系统/OS 木魚 12682℃ 7评论

Windows系统的磁盘系统上,有个传统,就是一个路径最长为256个字符。虽然现代的NTFS文件系统支持的路径文件长度已经远远超过了这个数值,但因为各种历史遗留原因和兼容性原因,Windows系统却不能原生彻底支持这种长路径。于是,我们经常会遇到这样一种情况,就是不小心一些软件创建了一个无比长的路径,然后这个目录就成了牛皮癣……无法删除,一旦删除就会出现这种提示:

源路径太长。
源文件名长度大于文件系统支持的长度。请尝试将其移动到具有较短路径名称的位置,或者在执行此操作前尝试将其重命名为较短的名称。

以下这个截图是由于某数据恢复软件因为未知的原因(类似死循环?)所创建的一个无比深的路径。

delete_long_path

其它经常可能出现此问题的场合还有很多,比如NodeJS的npm模块安装,由于npm的模块采用嵌套的机制来处理引用,因此一个复杂的模块其路径就会无比长,这种问题经常发生(顺便吐槽一下这种模块引用机制,真是蛋疼)。

由于无法用自管管理器直接删除这种长路径,因此必须要用第三方工具来额外调用新的支持长路径的文件系统API。

在百度上查询的话,你会发现大多数文章介绍的都是使用Robocopy来处理这种长路径。这种处理模式下robocopy带有/purge参数,这个参数的意思是删除目标目录中多余的目录。因此这个模式处理的流程是:

  1. 创建一个空的临时目录,比如为 C:\Temp:md c:\temp\
  2. 使用robocopy来处理目标目录: robocopy c:\temp c:\要删除的目录 /purge
  3. 如果没有删除,清空,可以重复第二步操作

带有/purge参数的robocopy会将要删除目录中的多余目录全部干掉,这种情况下也就是长路径目录。

除此以外,还有一些工具,比如LongPathTool,其实内部也是使用robocopy来进行操作的。

robocopy使用起来有点麻烦,而且其实并不一定始终有效。比如在此例中,robocopy就会自己崩溃,完全无法删除。

在试了很久后,我终于找到了一个灰常简单的方法搞定他们:

那就是用7-Zip的文件管理器,在文件管理器中直接按Shift+Delete删除,可以直接搞定这种蛋疼的长路径目录……

 

72.gif

 

 

喜欢 (9)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(7)个小伙伴在吐槽
  1. icon_mrgreen.gif亲测有效

    BigData2019-10-17 20:49 回复
  2. powershell (admin)
    Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1

    jin7none2019-09-07 14:12 回复
  3. 源路【经】太长

    kj42017-09-29 10:35 回复
  4. 不知道 win10 解除这个限制了没

    石樱灯笼2015-08-31 17:06 回复
  5. 【新建文件夹需要占用硬盘空间吗?路径长度有没有限制?】肖元安:哈哈,这么屌的问题,我来怒答一番。 首先为了防止no zuo no die,我决定在XP虚拟机里面测试,如图所示 : 创建一个虚拟硬盘: 把该硬盘格式化成NTFS分区的(大多数电… http://zhi.hu/qgrj(分享自 @知乎)

    12015-08-18 10:45 回复
  6. 我第一次觉得7z很牛逼,是以前用过什么所谓的极速隐藏文件的软件,实质就是把文件移到名为类似recycleaaa这样的文件夹中。然后,我从7z可以直接进入这个文件夹……然后我就再也不用这样的软件了……

    匿名2015-08-18 09:10 回复