如何删除.bat脚本中除1文件夹以外的文件夹中的所有文件和子文件夹?
问题描述:
我有一个文件夹,它存储了许多日志文件和子文件夹。我想删除除1个名为Excel_Export的文件夹以外的所有文件和子文件夹,该文件夹不应被删除。我使用下面的命令在我的批处理脚本:如何删除.bat脚本中除1文件夹以外的文件夹中的所有文件和子文件夹?
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”是越来越删除,除了里面的文件。我在上述命令中做错了什么? 另外,有没有更好的方法来做到这一点?
注意: 所有其他文件夹的名称(即将被删除)以'$'符号开头。
答
这是未经测试的 - 它删除d:\abc
中的所有正常文件,然后删除在同一文件夹中以$
开头的所有文件夹。
@echo off
del "d:\abc\*.*?"
for /d %%a in ("d:\abc\$*") do rd /s /q "%%a"
答
您的想法可能是完成您的任务的最有效(最快)的方式,除非您有一个小错误。您的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
已经不存在,或者如果它确实存在,那么它必须是空的这一战略只有正常工作。
+0
非常感谢您的回复.. – soorakarthik
这工作得很好..非常感谢.. – soorakarthik