如何删除目录下.abc后缀文件且不删除.abcd等相似后缀文件
问题原因
Windows CMD 中 del 命令的通配符匹配规则会同时校验文件的长文件名和 8.3 格式的短文件名。后缀为 .abcd 的文件生成短文件名时,后缀会被截断为 .abc,因此你之前使用的 *.abc 匹配规则会同时命中 .abc 和 .abcd 两类文件,导致误删。
可行解决方案
方案1:CMD 环境下执行
执行以下命令即可实现精准删除:
for /f "delims=" %f in ('where /r . *.abc ^| findstr /e /i /r "\.abc$"') do del "%f"
命令逻辑说明:
where /r . *.abc递归搜索当前目录下所有匹配*.abc规则的文件(包含长短文件名命中的结果)findstr /e /i /r "\.abc$"对搜索结果做正则校验,仅保留严格以.abc结尾的文件路径,不区分大小写- 遍历筛选后的结果逐行执行删除操作
如果是把命令写在批处理 .bat 文件中执行,需要把命令里的 %f 替换为 %%f。
方案2:PowerShell 环境下执行(更简洁)
PowerShell 的文件匹配规则默认严格基于长文件名,不会触发短文件名的匹配问题,执行以下命令即可:
Get-ChildItem -Recurse -Path . -Filter *.abc -File | Where-Object { $_.Extension.ToLower() -eq '.abc' } | Remove-Item -Force
内容的提问来源于stack exchange,提问作者HappyGorilla
相关产品推荐
相关产品推荐

