我有一个存储许多日志文件和子文件夹的文件夹。我想删除除1个名为Excel_Export的文件夹以外的所有文件和子文件夹,不应删除。我在批处理脚本中使用以下命令:
move D:\ABC\Delete_Test\Retain_Folder D:\ABC
rd /s /q "D:\ABC\Delete_Test"
move D:\ABC\Retain_Folder D:\ABC\Delete_Test
然而,在这个脚本运行之后,即使是'Retain_Folder'也会被删除,除了里面的文件。在上面的命令中我做错了什么? 还有,有更好的方法吗?
注意: 所有其他文件夹的名称(要删除的名称)都以'$'符号开头。
答案 0 :(得分:0)
这是未经测试的 - 它会删除d:\abc
中的所有普通文件,然后删除同一文件夹中以$
开头的所有文件夹。
@echo off
del "d:\abc\*.*?"
for /d %%a in ("d:\abc\$*") do rd /s /q "%%a"
答案 1 :(得分:0)
您的想法可能是完成任务的最有效(最快)方式,除非您有一个小错误。您的RD
命令会删除Delete_Test
文件夹,因此您必须重新创建它,然后才能将Retain_Folder
移回其所属的位置。您还可能希望在move
文件夹时将输出重定向为空 - 您不需要查看移动消息。
move "D:\ABC\Delete_Test\Retain_Folder" "D:\ABC" >nul
rd /s /q "D:\ABC\Delete_Test"
md "D:\ABC\Delete_Test"
move "D:\ABC\Retain_Folder" "D:\ABC\Delete_Test" >nul
如果您知道D:\ABC\Retain_Folder
在开始之前尚不存在,或者如果它确实存在,那么此策略只能正常工作,那么它必须为空。