如何删除批处理脚本中的非空文件夹?

How to delete a non-empty folder in Batch script?

我已经尝试了很多方法来做到这一点,包括 Remove-Itemrmdirdelrd。我见过类似的问题,但 none 的答案对我有帮助。需要明确的是,我并不是要特定的“书籍、工具或软件库”;我只想要一个 Batchfile 命令递归地删除一个文件夹。如果我做错了什么,我很抱歉;我是新来的。

要删除非空文件夹,您需要一个叫做 递归 的东西。我们通常读到的是我们要“delete a folder recursively”,意思是删除一个文件夹及其所有内容,包括其他文件夹,以及它们各自的内容和文件夹,等等上。

命令 del 为您完成。您是否阅读过它的帮助或文档?要看到这一点,您在 cmd 程序中使用的命令是:

del /?

但这并不能直接回答你的问题。您需要在批处理文件中输入的是:

del /s /q [non empty folder name]
  1. "/s"是递归删除
  2. "/q" 是删除它而不要求确认每个被删除的文件或文件夹。如果您想选择要删除文件夹中的内容,您可能想要删除此项目。
  3. 我在命令示例中写的方括号你一定不要写。只是文件夹名称。

对于之前的回答,我查看了微软目前的documentation命令,并没有明确说明del命令只会删除文件。

递归删除文件夹及其包含的所有文件或文件夹所需的命令是:

rmdir [name of the folder] /s /q

请注意“/s”和“/q”参数,它们与 del 命令的含义相同,但它们位于文件夹名称之后!这就是命令文档显示的内容,您可能会读到 here

但是递归删除目录失败的原因还有很多!如果您尝试删除包含 系统文件 隐藏文件 的目录,rmdir 命令将失败.要解决这个问题,还需要做更多的工作。引用上面指出的文档:

You can't delete a directory that contains files, including hidden or system files. If you attempt to do so, the following message appears:

The directory is not empty

Use the dir /a command to list all files (including hidden and system files). Then use the attrib command with -h to remove hidden file attributes, -s to remove system file attributes, or -h -s to remove both hidden and system file attributes. After the hidden and file attributes have been removed, you can delete the files.