如何删除.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" 
+0

这工作得很好..非常感谢.. – soorakarthik

您的想法可能是完成您的任务的最有效(最快)的方式,除非您有一个小错误。您的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