如何使用批处理文件删除 2 个特定文件夹中的所有内容?



我最近在计算机上处理自动化任务,我想制作一个批处理文件,自动删除 2 个特定文件夹中的内容。 我尝试使用此批处理文件删除 2 个文件夹的内容:

forfiles -p "C:Test1" -s -m *.* /C "cmd /c del @path"
forfiles -p "C:Test2" -s -m *.* /C "cmd /c del @path"

这似乎有效,但它只删除了文件,而不是文件夹,我希望删除其中的所有内容。我尝试了另一种选择,但结果仍然相同:

del /s /q "C:Test1*.*"
del /s /q "C:Test2*.*"

有人可以给我解释一下如何删除文件夹,而不仅仅是文件吗?

要删除文件夹,您必须使用 rd 命令

forfiles -p "C:Test2" -s -m *.* /C "cmd /c IF @isdir == TRUE rd /S /Q @path"

这是我的建议:

@(For %%G In ("C:Test1" "C:Test2") Do @PushD "%%~G" && (RD /S /Q . & PopD)) 2> NUL

它仅使用RD命令,并通过请求静默删除当前目录及其所有子目录来执行此操作。如果目录是当前目录,则无法删除该目录,因此代码将使用PushD将目录设置为当前目录,如果成功,则&&运行RD命令,使用相对当前目录.,然后返回到先前的当前目录,PopDRD命令虽然无法删除当前目录,但仍然可以删除其中的所有内容,并且确实会删除,尽管它确实会生成错误消息。我已经通过将 StdErr(2>重定向到NUL设备)来抑制错误消息。

最新更新