删除超长路径文件或者目录

在Windows操作系统,由于使用目录工具不当或者在使用某些编程工具时生成目录时(比如反复在同一目录下导入同一个工程)常常会产生多层递归模式,导致产生多级超长目录结构,而无法用Windows可视化右键模式进行删除,市面上的很多文件删除工具,如360强力删除、unlocker删除都无济于事,真是一件恼人的事情。

其实,windows系统自身便带有相关的命令行工具可以用来删除,操作过程如下:

  1. 比如D盘下面如存在D:\blog\node_modules\a\b\c......多层嵌套的目录;
  2. 通过cmd命令行输入cd D:\blog\node_modules命令进入上述目录(即D:\blog\node_modules);如下图所示:
  3. mkdir tempDir(上图中已有示例),该命令在D:\blog\node_modules目录下创建名为tempDir的临时空目录,创建之后临时空目录的路径为D:\blog\node_modules\tempDir;
  4. robocopy /mir tempDir a;//tempDir是步骤3创建的空目录名称,而a则是D:\blog\node_modules\目录下的直接子目录即a
  5. 上面执行完毕之后,便可以删除目录了,此时D:\blog\node_modules\a\b\c......就只剩下D:\blog\node_modules,而后面的超长子路径a\b\c......则被删除了。

但是在某些情况下,执行robocopy命令在中途就可能停止,又不得不重新执行该命令,直到目录完全被删除为止。因此可以写批处理文件来循环操作,当然也可以采用简单的python脚本来执行。

采用python脚本循环删除超长目录

示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#-*- coding:utf-8 -*-
import os
'''
1.比如无法删除的超长目录为D:\blog\node_modules\a\b\c\...\...;
2.执行完毕之后,目录变成D:\blog\node_modules,后面的a\b\c\...\...则会被删除;
'''

os.chdir(r"D:\blog\node_modules")
os.mkdir(r"D:\blog\node_modules\tempDir")#创建临时的空目录
while 1:
result = os.system("Robocopy.exe tempDir a /MIR")
if(result != 0):
continue
else:
break
os.rmdir(r"D:\blog\node_modules\tempDir")#删除之前创建的临时目录

note:os.system(“Robocopy.exe tempDir a /MIR”)中tempDir是第八行代码创建的空目录名称,而a则是D:\blog\node_modules\目录下的直接子目录即a,实际使用时需要修改成你自己的目录