Batch file 使用批处理脚本删除目录中除.bak.$av和.pen之外的所有文件
我想知道如何删除每个扩展名的文件(使用批处理脚本),但扩展名为.bak、.av和.pen的文件除外。在试用之前,请备份您的文件,以免永远丢失数据 注意:使用风险自负,它会大量删除所有内容Batch file 使用批处理脚本删除目录中除.bak.$av和.pen之外的所有文件,batch-file,extension-methods,delete-file,Batch File,Extension Methods,Delete File,我想知道如何删除每个扩展名的文件(使用批处理脚本),但扩展名为.bak、.av和.pen的文件除外。在试用之前,请备份您的文件,以免永远丢失数据 注意:使用风险自负,它会大量删除所有内容 SET /p ExcludeFiles = What file type should be kept (NOT deleted)? Type the file name(s) inside parantheses. Example: (bak) or ($av pen) SET /p MapD
SET /p ExcludeFiles = What file type should be kept (NOT deleted)? Type the file name(s) inside parantheses.
Example: (bak) or ($av pen)
SET /p MapDrive = What drive letter is the folder in?
Example: c or n
SET /p Directory = Drag the folder you would like to modify into this command prompt then press ENTER.
%MapDrive%:
cd %Directory%
attrib +a *.* /s
echo %date%
for %%i in %ExcludeFiles% do attrib -a *.%%i /s
echo %date%
del %Directory%\*.* /s /a:a /q
echo %date%
attrib +a %Directory%\*.* /s
echo %date%
您没有指定希望使用的操作系统或脚本语言,这会有所帮助 然而,这里有一个相当通用的脚本类型 一种相当普遍的方法是创建子文件夹,复制或移动要保留在子文件夹中的文件,删除要清除的文件夹中的所有文件,然后将保存在子文件夹中的文件移回原始文件夹 大多数“删除文件”命令类型旨在让您指定要删除的文件,而不是不想删除的文件 实际上,对于这个问题,我想知道为什么这不是delete命令的一个很好的扩展 现在,如果您需要执行文件树删除操作,即遍历文件目录层次结构以删除除要保留的文件以外的文件,那么这将有点困难。一种方法是遍历文件树并对每个目录执行相同的操作 另一个选项是生成文件夹中所有文件的列表,并使用sed等实用程序修改文件列表,以便创建一个临时的动态脚本,然后执行该脚本。该实用程序将修改该脚本,以便将要保留的文件从列表中删除,并且要删除的文件将修改列表中该文件名的行以执行删除
不过,在部署动态脚本执行方法之前,我肯定会做一些认真的测试。使用FINDSTR忽略具有特定扩展名的文件名。通过管道将DIR/B的结果传输到FINDSTR,并使用FOR/F处理结果
for /f "eol=: delims=" %%F in ('dir /b /a-d^|findstr /vire "\.bak \.\$av \.pen"') do @del "%%F"
如果从命令行运行,则将%%F
更改为%F