You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于XLSX列表批量重命名3000+文件并做匹配校验

跨平台批量重命名解决方案(匹配XLSX列表)

一、专用软件方案

  • Bulk Rename Utility(Windows优先,macOS/Linux可通过Wine运行)

    1. 将XLSX列表导出为CSV格式(Excel/Numbers中选择「另存为CSV」)
    2. 打开软件加载目标文件夹,切换到「导入」标签导入CSV文件
    3. 在「匹配」规则中启用部分文本匹配(比如勾选「包含」,用列表核心关键词对应文件名片段)
    4. 预览重命名结果无误后执行,支持批量预览规避错误
  • Renamer(macOS)

    1. XLSX转CSV后,导入软件的「列表重命名」模块
    2. 开启「模糊匹配」功能,设置匹配阈值(如80%相似度),让软件自动关联文件名与列表条目
    3. 支持按列表编号排序,自动跳过列表中不存在的文件,保留编号空缺

二、Python脚本方案(跨平台通用)

灵活性最强,适合有基础的用户自定义匹配规则:

  1. 先安装依赖:pip install pandas fuzzywuzzy python-Levenshtein
  2. 脚本示例:
import os
import pandas as pd
from fuzzywuzzy import fuzz

# 读取XLSX列表,假设列名为"编号"和"正确名称"
df = pd.read_excel("文件名列表.xlsx")
target_dir = "目标文件夹路径"
file_list = os.listdir(target_dir)

for filename in file_list:
    file_path = os.path.join(target_dir, filename)
    if not os.path.isfile(file_path):
        continue
    
    # 提取文件名主体(去除扩展名)
    name_body = os.path.splitext(filename)[0]
    # 计算每个列表条目的部分匹配相似度
    match_scores = df["正确名称"].apply(lambda x: fuzz.partial_ratio(name_body, x))
    best_idx = match_scores.idxmax()
    best_score = match_scores.max()
    
    # 设置相似度阈值(可根据实际情况调整)
    if best_score >= 70:
        ext = os.path.splitext(filename)[1]
        new_name = f"{df.loc[best_idx, '编号']}. {df.loc[best_idx, '正确名称']}{ext}"
        new_path = os.path.join(target_dir, new_name)
        
        # 避免重名冲突
        if not os.path.exists(new_path):
            os.rename(file_path, new_path)
            print(f"重命名:{filename} → {new_name}")
        else:
            print(f"跳过:{new_name} 已存在")
  1. 使用说明:修改脚本中的路径、列名和阈值,先测试少量文件,确认匹配准确后再批量执行

三、macOS Automator工作流方案

适合无编程基础的mac用户:

  1. 打开Automator,新建「文件夹动作」,选择目标文件夹
  2. 添加「获取文件夹内容」动作,勾选「重复项处理」为「忽略」
  3. 添加「运行Shell脚本」动作,Shell选择/usr/bin/python3,粘贴上述Python脚本核心逻辑(注意调整路径参数)
  4. 可选:结合Numbers自动化
    • 将XLSX导入Numbers,创建包含「原文件名片段」「新文件名」的表格
    • 用「快捷指令」的「读取表格」+「重命名文件」动作,设置「包含匹配」规则批量执行

注意事项

  • 操作前务必备份所有文件,避免误操作导致数据丢失
  • 根据文件名混乱程度调整模糊匹配阈值,平衡匹配准确率与覆盖范围
  • 完全无法匹配的文件单独收集后手动处理

内容的提问来源于stack exchange,提问作者user32593453

火山引擎 最新活动