如何通过批处理脚本删除目标目录及子目录中多份重复的Settings.txt文件
批处理实现方案
核心逻辑
先递归遍历指定目录下所有Settings.txt文件并统计数量,仅当数量≥2时删除所有匹配文件,其余情况直接执行后续逻辑。
完整脚本
@echo off setlocal enabledelayedexpansion :: 基础配置 set "TARGET_ROOT=D:\TargetFolder" set "TARGET_FILE=Settings.txt" set /a file_count=0 :: 递归查找所有匹配文件,统计数量并存储路径 for /f "delims=" %%f in ('dir /s /b /a-d "%TARGET_ROOT%\%TARGET_FILE%" 2^>nul') do ( set /a file_count+=1 set "file_path_!file_count!=%%f" ) :: 数量≥2时批量删除所有匹配文件 if %file_count% geq 2 ( for /l %%i in (1,1,%file_count%) do ( del /f /q "!file_path_%%i!" ) ) :: -------------------- :: 后续业务逻辑写在此处 :: -------------------- endlocal exit /b
代码说明
dir /s /b /a-d:递归查找所有匹配的文件,/a-d参数排除同名目录的干扰,2^>nul屏蔽文件未找到的报错信息- 查找文件时同步存储所有匹配文件的路径,避免删除时二次遍历带来的性能损耗和文件状态变更导致的异常
del /f /q:强制删除只读属性的文件,且静默删除无弹窗提示
内容的提问来源于stack exchange,提问作者Michael513
相关产品推荐
相关产品推荐

