为什么rmdir / s会失败但仍会删除最里面的子目录? [重复]


1

这个问题在这里已有答案:

我有一个由Cygwin的7za.exe创建的目录结构(src / ...)。从命令提示符我跑了 rmdir /s /q src

这导致了错误消息(由于我的DOS shell早已溢出,所以解释):

无法删除src / test / unit / geom

该目录不为空

浏览 src/test/unit/geom 显示它确实是空的,所以我再次运行相同的rmdir命令。同样的错误,但指着 src/test/unit 代替。我的资源管理器窗口显示没有内容 src/test/unit/geom 跌倒了 src/test/unit

三个rmdir执行后,它完全消失了。

这是Windows 7和 set CYGWIN=nontsec 已经运行了。我相信这是其中的来源 构建问题 一段时间以来,但直到现在我还没有确定罪魁祸首。

我可以做些什么来避免将来出现这种情况?如果它再次发生,我应该在识别目录结构的腐败方面方面寻找什么?


什么命令解释器正在运行这个“命令提示符”?微软的CMD?庆典? TCC? 顺便说一下,它不是“DOS shell”。 DOS与它无关;而且你没有运行DOS。
JdeBP

Windows 7上的@JdeBP DOS shell == CMD
Raven

2
不,那不是DOS shell。这是一个Win32程序。正如我所说,DOS与它无关。而且:我 已经知道 盒子里有什么。这不是你被问到的问题。但我也知道你是那种安装像Cygwin这样的人的人。所以第二次: 你用的是什么命令解释器?
JdeBP

我很神秘。我试过这个并没有用,然后我尝试了完全相同的命令,它确实有效。越野车?环境未知减轻行为?首先,它只删除了一个完整的子目录树,只要所有目录都是空的(除了有子文件夹 - ),换句话说,当文件在文件夹中时它不起作用。然后它确实可以处理文件夹中的文件。 ?!
r_alex_hall

Answers:


1

如果您可以重现该问题,请尝试使用 Sysinternals ProcMon (或FileMon)看看幕后发生了什么。我已经有一段时间看了这个东西但是IIRC,cygwin执行一些奇特的步骤来复制Unix语义,结果并不总是完美的。


自从我开始认真研究这个问题以来没有任何重复,但如果我得到一个,我相信ProcMon将是答案。
Raven
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.