批处理批量删除旧文件时如何排除特定文件夹或通配符格式文件
批处理脚本修改方案
你可以直接使用下面修改后的脚本,可实现原有删除逻辑+排除指定目录的需求:
FORFILES /P "C:\Temp\" /D -3 /S /C "cmd /c if @isdir==FALSE if not @path ^| findstr /i /b /c:"\"C:\\Temp\\ABC\\XYZ\\\"" >nul del /F /Q @path"
修改说明
- 新增排除目录判断逻辑:在原有删除判断前增加路径匹配校验,只要文件完整路径属于
C:\Temp\ABC\XYZ\目录下,就会跳过删除操作 findstr匹配参数说明:/i忽略路径大小写,避免因路径大小写不一致导致匹配失效/b强制从路径开头匹配,防止其他子目录中出现同名XYZ文件夹时被误排除- 命令中的
^|是管道符的转义写法,因为嵌套在FORFILES的/C参数的引号内,必须转义才能被系统正常识别
可选双重校验方案
如果你需要额外通过文件名规则做二次校验(避免排除目录配置错误导致漏删),可以使用下面的版本,会同时叠加排除所有符合Test*.*.csv命名规则的文件,安全性更高:
FORFILES /P "C:\Temp\" /D -3 /S /C "cmd /c if @isdir==FALSE if not @path ^| findstr /i /b /c:"\"C:\\Temp\\ABC\\XYZ\\\"" >nul if not @fname ^| findstr /i /b /c:"Test" >nul if @ext==\"csv\" del /F /Q @path"
内容的提问来源于stack exchange,提问作者Ganesh Mate
相关产品推荐
相关产品推荐

