能否通过批处理文件识别目录下仅扩展名不同的同名文件?
批处理识别同主名不同扩展名文件方案
完全可以通过Windows批处理脚本实现该需求,具体实现如下:
实现思路
遍历目标目录下的所有文件,提取每个文件的主文件名(不含扩展名)进行计数,只要某个主文件名的计数≥2,即属于你需要识别的「主文件名相同、扩展名不同」的场景。
完整批处理代码
@echo off setlocal enabledelayedexpansion :: 配置目标扫描目录,这里默认是当前目录下的MAINFOLDER,可修改为实际路径 set "target_dir=.\MAINFOLDER" :: 统计每个主文件名的出现次数 for %%f in ("%target_dir%\*.*") do ( set "fname=%%~nf" :: 若文件名包含#,可替换为其他不会出现在文件名中的特殊符号 set /a count#!fname!+=1 ) :: 输出识别结果 echo 检测到的同主名多扩展名文件清单: for /f "tokens=2,3 delims=#=" %%a in ('set count#') do ( if %%b geq 2 ( echo - 主文件名:*%%a*,共存在%%b个不同扩展名的文件 ) ) pause endlocal
代码说明
%%~nf是批处理for循环的内置参数扩展,无需额外依赖,可直接提取文件的主文件名(不含路径、不含扩展名)- 可通过修改
target_dir变量的值,自定义需要扫描的目录,支持填写绝对路径(例如D:\我的文件) - 若你需要扫描的文件名包含
#字符,可把代码中所有的count#修改为其他不会出现在文件名中的特殊符号即可
运行效果
针对你给出的目录结构,运行脚本后输出结果如下:
检测到的同主名多扩展名文件清单:
- 主文件名:TEST,共存在2个不同扩展名的文件
- 主文件名:RANDOM,共存在2个不同扩展名的文件
- 主文件名:UNKNOWN,共存在2个不同扩展名的文件
内容的提问来源于stack exchange,提问作者Eliazar
相关产品推荐
相关产品推荐

