如何在Windows多级子文件夹中查找跨目录重名文件?
识别Windows多级文件夹中的重名文件
处理大型嵌套文件夹时找重名文件确实很头疼,我整理了几个实用的方法,都是Windows原生支持的,不用装额外工具:
一、用CMD脚本批量检测重名文件
如果你习惯用命令行,这个批处理脚本可以直接帮你列出所有重复的文件名及对应路径:
- 新建一个文本文件,把下面的代码粘贴进去,然后保存为
find_duplicates.bat(注意把扩展名从.txt改成.bat):
@echo off setlocal enabledelayedexpansion echo 正在扫描重复文件,请稍候... set "prev_file=" set "first_duplicate=1" :: 递归获取所有文件并排序,对比相邻文件名找出重复项 for /f "delims=" %%f in ('dir /s /b /a-d ^| sort') do ( set "current_file=%%~nxf" if "!current_file!"=="!prev_file!" ( if !first_duplicate! equ 1 ( echo. echo 发现重名文件: !current_file! echo - !prev_full_path! set "first_duplicate=0" ) echo - %%f ) else ( set "first_duplicate=1" ) set "prev_file=!current_file!" set "prev_full_path=%%f" ) endlocal pause
- 把这个bat文件放到你要扫描的根文件夹里,双击运行。它会递归遍历所有子文件夹,清晰输出每个重名文件的完整路径。
参数说明:dir /s /b /a-d用来递归获取所有文件的纯文件名(排除文件夹),sort把相同名称的文件排在一起,方便对比相邻项。
二、用资源管理器搜索快速定位
如果不想写脚本,Windows自带的搜索功能也能轻松搞定:
- 打开目标根文件夹,在右上角搜索框输入
filename:*,回车后会显示所有文件(不会包含文件夹) - 点击搜索结果顶部的「名称」列进行排序,相同名称的文件会自动聚在一起,你可以直接浏览标记重复项
- 进阶筛选:如果只想找特定类型的重名文件,比如PDF,就搜
filename:"*.pdf";如果要排除小文件减少干扰,加个大小筛选:filename:* size:>50KB
三、PowerShell更精准的批量输出
PowerShell是Windows自带的更强大命令行工具,用这一行命令就能直接得到带路径的重名文件汇总:
Get-ChildItem -Recurse -File | Group-Object -Property Name | Where-Object { $_.Count -gt 1 } | Select-Object Name, Count, @{Name="文件路径"; Expression={$_.Group.FullName -join "`n"}}
执行后会显示:
- 重名文件的名称
- 重复的次数
- 所有重复文件的完整路径(每行一个)
如果想把结果保存成CSV文件方便后续整理,就在命令末尾加导出语句:
Get-ChildItem -Recurse -File | Group-Object -Property Name | Where-Object { $_.Count -gt 1 } | Select-Object Name, Count, @{Name="文件路径"; Expression={$_.Group.FullName -join "`n"}} | Export-Csv -Path "重名文件列表.csv" -NoTypeInformation -Encoding UTF8
小贴士
- Windows默认不区分文件名大小写,如果你需要严格区分
Test.txt和test.txt,可以在PowerShell的Group-Object里加-CaseSensitive参数 - 可以用
-Exclude参数排除不需要扫描的文件类型,比如Get-ChildItem -Recurse -File -Exclude *.tmp,*.log
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

