在Windows上以递归方式删除目录的内容

Kon*_*hik 11 windows shell batch-file

我需要删除目录的全部内容(嵌套文件夹和所有内容)而不删除目录本身.在事实之后重新创建目录不是一个选项,因为它正在被正在运行的进程锁定并且删除它将失败.

到目前为止,我有以下内容:

rd /s /q dir1
rd /s /q dir2
rd /s /q dir3
del /q /f *
Run Code Online (Sandbox Code Playgroud)

它工作正常,但显而易见的问题是,每次第一级目录集更改时,我都必须更新此脚本.

在UNIX上,我会像这样解决这个问题:

rm -rf *
Run Code Online (Sandbox Code Playgroud)

什么是Windows等价物?

Ben*_*ein 16

假设您正在从顶级目录执行命令:

for /d %X in (*.*) do rd /s /q %X
Run Code Online (Sandbox Code Playgroud)

如果从脚本执行此操作,则必须使用双百分号:

for /d %%X in (*.*) do rd /s /q %%X
Run Code Online (Sandbox Code Playgroud)

如果您还需要删除顶级目录中的文件,请将其添加到脚本中:

del /q /f *
Run Code Online (Sandbox Code Playgroud)

  • 我接受了这个答案.这是99%的正确,当然足以让我找出最终的解决方案.这个答案中唯一的问题是"for/d/r"应该只是"for/d".for循环中不需要递归目录列表,并且在执行rd时可能会导致一些有趣的问题. (3认同)