我需要删除目录的全部内容(嵌套文件夹和所有内容)而不删除目录本身。在事实之后重新创建目录不是一个选项,因为它正在被正在运行的进程锁定并且删除它会失败。
到目前为止,我有以下内容:
rd /s /q dir1
rd /s /q dir2
rd /s /q dir3
del /q /f *
它可以工作,但显而易见的问题是每次第一级目录集更改时我都必须更新此脚本。
在UNIX上,我会这样解决:
rm -rf *
什么是Windows等价物?
答案 0 :(得分:15)
假设您正在从顶级目录执行命令:
for /d %X in (*.*) do rd /s /q %X
如果从脚本执行此操作,则必须使用双百分号:
for /d %%X in (*.*) do rd /s /q %%X
如果您还需要删除顶级目录中的文件,请将其添加到脚本中:
del /q /f *
答案 1 :(得分:2)
我知道这是一个陈旧的问题,旧的答案,但我找到了一种更简单的方法来做到这一点并想到分享它。
您可以进入目标目录并使用rd
命令。由于Windows不允许您删除当前正在使用的任何文件或目录,并且您通过插入目标目录来使用目标目录,因此您将删除目标目录本身以外的所有内容。
cd mydir
rd /s /q .
你会收到一条消息:
该进程无法访问该文件,因为该文件正由另一个进程使用。
在删除所有内容后,rd
命令无法删除当前目录时会发生这种情况,因为您已经站在其中。但如果您回显最后一个退出代码,那么您将看到这不是实际错误,该代码将为0
。
echo %errorlevel%
0
这是我正在使用的,它运作正常。我希望这会有所帮助。