我最近在计算机上处理自动化任务,我想制作一个批处理文件,自动删除 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
命令,使用相对当前目录.
,然后返回到先前的当前目录,PopD
。RD
命令虽然无法删除当前目录,但仍然可以删除其中的所有内容,并且确实会删除,尽管它确实会生成错误消息。我已经通过将 StdErr(2>
重定向到NUL
设备)来抑制错误消息。