为什么 rmdir /s 会失败但仍然会删除最内层的子目录?

为什么 rmdir /s 会失败但仍然会删除最内层的子目录?

我有一个由 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已经运行。我相信这是建立问题已经有一段时间了,但直到现在我还没有确定罪魁祸首。

我该怎么做才能避免将来再发生这种情况?如果再次发生,我应该如何识别目录结构的损坏方面?

答案1

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

相关内容