我有一个文件夹结构:
C:\foo1\foo2\foo3\foo4\foo5
我想通过以下方式彻底删除该文件夹:
C:\>rmdir /S foo1
分别对rmdir /s foo1
、rmdir /S /Q foo1
、rmdir /s/q foo1
、进行同样的操作rd /s/q foo1
。rd /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))