如何避免 rmdir 仅删除 Windows 上的最后一个文件夹?

如何避免 rmdir 仅删除 Windows 上的最后一个文件夹?

我有一个文件夹结构:

C:\foo1\foo2\foo3\foo4\foo5

我想通过以下方式彻底删除该文件夹:

C:\>rmdir /S foo1

分别对rmdir /s foo1rmdir /S /Q foo1rmdir /s/q foo1、进行同样的操作rd /s/q foo1rd /s/q "C:\foo1"

foo1但是,并没有删除整个文件夹。只有foo5被删除,结果消息如下:

foo1\foo2\foo3\foo4 - The directory is not empty.

我重复命令rmdir /S foo1。现在foo4被删除了。我必须重复这个步骤5次,直到foo1被完全删除。

但是param的描述/S是:

删除目录树(指定目录及其所有子目录,包括所有文件)。

只删除了最后一个目录,却没有删除整个目录结构,这是什么原因呢?

以管理员身份使用 cmd 不会改变结果。

答案1

问题出在 Windows 资源管理器中,它会查看。等等C:\foo1\foo2\foo3\foo4\foo5中也是一样。令人惊讶的是,当多次调用 rmdir 命令时,会强制删除。C:\foo1\foo2\foo3\foo4

对我来说,这种效果既可重现,又不可重现。有趣的是,一台装有 Windows 1903 版本的 PC 出现了这种效果,而另一台装有 1903 版本的 PC 却没有这种效果。

我想通过批处理文件可靠地删除目录。我现在使用的方法是:

for /l %%i in (1, 1, 5) do (if exist foo1 (rd /s/q foo1))

分别在命令行上使用%i而不是%%i

for /l %i in (1, 1, 5) do (if exist foo1 (rd /s/q foo1))

相关内容