如何使用命令提示符或脚本获取文件夹及子目录的文件路径等详细信息
批量遍历目录及子目录获取文件信息的实现方案
不需要人工手动整理,以下三种技术方案均可实现需求,可根据你的使用场景选择:
方案1:Windows命令提示符(CMD)实现
适合临时快速查询,不需要额外安装软件:
- 提取所有文件的名称、格式、路径并导出到CSV文件,执行命令:
for /r "替换为你的目标文件夹绝对路径" %i in (*) do @echo "%~ni","%~xi","%~fi" >> 文件信息.csv
参数说明:
%~ni:提取不含后缀的文件名%~xi:提取文件扩展名(即文件格式)%~fi:提取文件的完整绝对路径
导出的CSV文件可直接通过表格工具的「删除重复值」功能完成去重。
- 单独提取所有不重复的文件格式,执行两条命令:
for /r "替换为你的目标文件夹绝对路径" %i in (*) do @echo %~xi >> 临时后缀列表.txt sort /unique 临时后缀列表.txt /o 不重复文件格式列表.txt
执行完成后会生成去重后的格式列表文件,临时文件可自行删除。
方案2:Python代码实现
灵活性最高,可自动完成遍历、去重、导出全流程,无需后续手动处理:
import os import csv # 替换为你要遍历的目标文件夹路径 target_dir = r"C:\替换为你的目标文件夹路径" # 用集合存储自动去重 unique_file_info = set() unique_extensions = set() for root, dirs, files in os.walk(target_dir): for file in files: file_name, ext = os.path.splitext(file) full_path = os.path.abspath(os.path.join(root, file)) # 存入文件信息集合自动去重 unique_file_info.add((file_name, ext, full_path)) if ext: # 统一转小写避免大小写差异导致的重复,比如.JPG和.jpg视为同一种格式 unique_extensions.add(ext.lower()) # 导出去重后的全量文件信息到CSV with open("去重文件信息.csv", "w", newline="", encoding="utf-8-sig") as f: writer = csv.writer(f) writer.writerow(["文件名", "文件格式", "文件路径"]) for info in sorted(unique_file_info): writer.writerow(info) # 导出所有不重复的文件格式 with open("不重复文件格式.txt", "w", encoding="utf-8") as f: for ext in sorted(unique_extensions): f.write(f"{ext}\n")
运行代码后会在当前目录生成两个结果文件,所有内容已自动去重。
方案3:PowerShell脚本实现
Windows原生支持,功能比CMD更强,可直接在脚本中完成去重:
- 导出去重后的全量文件信息到CSV:
Get-ChildItem -Path "替换为你的目标文件夹路径" -File -Recurse | Select-Object @{Name='文件名';Expression={$_.BaseName}}, @{Name='文件格式';Expression={$_.Extension}}, @{Name='文件路径';Expression={$_.FullName}} | Sort-Object -Property 文件名,文件格式,文件路径 -Unique | Export-Csv -Path "去重文件信息.csv" -Encoding UTF8 -NoTypeInformation
- 单独导出不重复的文件格式列表:
Get-ChildItem -Path "替换为你的目标文件夹路径" -File -Recurse | Select-Object Extension -Unique | Sort-Object Extension | Out-File -FilePath "不重复文件格式.txt" -Encoding UTF8
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

