将项目导入eclipse时,它以某种方式开始创建目录的递归版本。
现在,当我尝试删除任何内容时,我收到消息“您指定的文件名太长了。”
我无法从命令shell中删除它。我无法从资源管理器中删除它。我无法做任何事情。我不知道Eclipse创建了多少个副本。在我意识到出错之前,Eclipse运行了一分钟,我取消了操作。
我可以获取顶级文件夹的属性,它说它包含497个文件夹。
问题1:如何在Windows中删除所有这些内容?
问题2:日食是怎么回事?答案 0 :(得分:159)
答案 1 :(得分:85)
如果您对命令行不满意,7Zip是最终的解决方案。
干杯!
答案 2 :(得分:19)
我遇到了与Eclipse类似的问题:尝试使用Subclipse导入项目,它生成了一组深度嵌套的目录,我无法删除。
我做了几件事,首先我将目录名称编辑到尽可能最短的长度(实际上我认为这是毫无意义的)。其次,我尽可能深地遍历目录树,然后剪切并粘贴分支(这使得删除原始分支成为可能),然后重复该过程。
@Charlie和@ Tomalek的解决方案看起来可能更优雅。我不打算重复这些经验来发现。答案 3 :(得分:12)
至于Q1)
使用subst来缩短路径:
subst Q: C:\very\long\path\created\by\eclipse
Q:
del *.*
至于Q2)
长路径在其他操作系统中不是问题,并且有可以处理长度超过255个字符的路径的Windows API函数,所以他们只是这样做了,我想。
答案 4 :(得分:10)
如果您需要处理超过MAX_PATH
的路径,则必须使用Unicode版本的Windows文件API(例如DeleteFileW
)并使用\\?\前缀。您可以使用这些API编写一个简短的程序来枚举这些目录并删除它们。
答案 5 :(得分:7)
修复简单而且免费!根本不需要重命名文件夹。
免费下载Cygwin。
使用命令rm -f -r <folder-name>
并稍等片刻。
我有一个大小为1.5 GB的文件夹,里面有很多内部文件夹,它有效!
答案 6 :(得分:4)
我使用eclipse遇到了同样的问题..!创建了数以亿计的嵌套文件夹,它占用了超过500MB的空间!!!!
我在Windows中尝试了很多东西但没有任何效果。
最后我刚刚使用ubuntu重新启动并删除了那个可怕的文件夹..就像那样.. ubuntu似乎没有任何基于文件路径长度的访问限制,因为Windows确实如此。 让生活变得更轻松.. :)
答案 7 :(得分:4)
this Windows Sysinternals forum post by maxaha1中提到的方法有效。
我建议你自上而下。只要你保持不变 卷(共享),通常可以将上层目录拖动到 新的父母,不考虑目录的内容 拖动(即。和它可能有的长度/递归问题)。所以 你可以在你的问题路径上找到4或5级的目录 将其拖到根目录。然后删除现在的原始路径 包含几个级别。理想情况下,努力保持最短的路径 超过250个字符(包括文件名)。我正在进行系统迁移 那一刻,我们有一些用户拥有340多条char路径,而不是 没有这种方法的复制。我已尝试过subst,递归网用, 递归脚本等。不幸的是,用户似乎能够 创造令最好的程序员,管理员等感到困惑的东西。
创建新文件夹,然后每次从顶部向下拖放几个文件夹(并删除它们),直到清理完所有文件夹为止。
答案 8 :(得分:4)
前三个回复显然是垃圾邮件(对于付费软件演示)。如果您想要一个免费的一键式解决方案,请参见此处:
http://www.osmstudios.com/Display.asp?Page=pathtoolong
可能在这个帖子中使用了3行Java。
-fm
答案 9 :(得分:3)
以编程方式,您可以使用DeleteFileW和RemoveDirectoryW
进行删除,并将L"\\?\"
添加到文件名之前。请注意,您必须使用W版本而不是A版本的API。
答案 10 :(得分:3)
上面的人已经发布了对“rimraf”的引用,但是让我添加更多细节。如果您的系统上安装了Node,那么只需使用rimraf模块(它可以安装在您的Path上)。到目前为止,这是在最简单的情况下删除Windows系统上的东西的最简单方法。实际上,rimraf并不是很棒,因为Node.js在设备内核级别处理文件系统。如果你查看Node的'fs'模块源代码,你会看到this之类的代码。本质上,Node.js处理文件系统比甚至Git for Windows都要好得多,即在Windows上使用git clean -fdx时不会删除具有长路径名的文件夹。
答案 11 :(得分:1)
IIRC,我通过抓取文件夹结构以编程方式删除它们。
答案 12 :(得分:1)
MIR
(镜像一个完整的目录树)选项也适用于Windows和窗口网络路径..
robocopy empty_dir <foldertobedeleted> /MIR
输出就像这样..
答案 13 :(得分:1)
我对此处和其他地方(robocopy,7zip,subst,shady间谍软件)发布的任何解决方案都不满意,所以我推出了自己的小命令行工具。
它可以递归删除文件或整个目录。也许将来我会添加更多选项。
该工具名为SuperDelete,您可以从releases page page GitHub获取该工具。
答案 14 :(得分:1)
好的,我尝试为此寻找解决方案,我找到了一个最简单的Windows用户解决方案
打开mobaxterm。转到要删除的目录(使用cd)并运行以下命令
rm -rf directoryname
现在将删除Windows抱怨删除的所有文件夹,子文件夹
答案 15 :(得分:0)
我遇到了类似的问题,使用 7-zip(第三方软件)帮助了我。
答案 16 :(得分:0)
令人讨厌的是,在2016年,当Linux解决了这个问题时,这仍然给我们Windows用户带来了一个问题。当它在Java中很容易做到时,它变得更加烦人。
我们应该使用Change.org请求MS包含此功能。它可能很难。如果他们担心向后兼容性,为什么不能只使用管理员可以打开或关闭的严格模式。至少给我们警告,但然后允许我们删除它。 GRRRRR [/ rant]
如果您在计算机上运行Java,您可能会发现此代码很有用:
import java.io.File;
public class Delong {
public static void main(String[] args) {
File file = new File("F:\\YourDirectory\\YourFile");
boolean result = deleteDirectory(file);
if(result)
System.out.println("Deleted");
else
System.out.println("Failed");
}//end main
/**
* Force deletion of directory
* @param path The path you want to delete
* @return True if it worked;
*/
static public boolean deleteDirectory(File path) {
if (path.exists()) {
File[] files = path.listFiles();
for (int x = 0; x < files.length; x++) {
if (files[x].isDirectory())
deleteDirectory(files[x]);
else
files[x].delete();
}//end for
}///end if
return (path.delete());
}//endDeleteDirectory
}//end class
答案 17 :(得分:-1)
如果您的系统上已经安装了git
,那么删除文件夹及其所有内容的简单方法是打开gitbash
窗口,然后运行此命令。
$ rm -rf DeleteFolderName
答案 18 :(得分:-1)
您可以将“Cygwin”与命令“rm --force --recursive PATH”或短“rm -fr PATH”一起使用。
答案 19 :(得分:-2)
尝试使用Unlocker。它用于杀死持有文件锁的进程,但我认为它可以像你一样强制删除f-ed文件。