You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于无序文本文件批量匹配并重命名文件夹?

批处理脚本:基于文本匹配的精准文件夹重命名

需求说明

现有数百个无序文件夹,需根据albumsids.txt中的规则重命名——文本文件每行格式为唯一ID_原文件夹名称,需根据原文件夹名称匹配对应行,将原文件夹重命名为该行完整内容。

修改后的脚本

@echo off
setlocal EnableDelayedExpansion

:: 加载重命名映射表:键=原文件夹名,值=目标新名称
for /f "usebackq delims=" %%c in ("albumsids.txt") do (
    :: 分割行内容:下划线前为唯一ID,后续为原文件夹名称
    for /f "tokens=1* delims=_" %%b in ("%%c") do (
        set "rename_map[%%d]=%%c"
    )
)

:: 遍历当前目录所有文件夹,匹配并执行重命名
for /d %%a in (*) do (
    if defined rename_map[%%a] (
        echo 正在重命名:"%%a" → "!rename_map[%%a]!"
        ren "%%a" "!rename_map[%%a]!"
    ) else (
        echo 未找到匹配项,跳过:"%%a"
    )
)

endlocal

脚本说明

  1. 映射表构建:

    • 读取albumsids.txt的每一行,通过嵌套for循环分割出原文件夹名称(下划线后的全部内容),将完整行内容作为目标名称存入以原文件夹名为键的变量映射表中。
    • 支持原文件夹名称包含空格或下划线(只要唯一ID部分不含下划线即可)。
  2. 文件夹遍历与重命名:

    • 使用for /d遍历当前目录下的所有文件夹。
    • 检查当前文件夹名是否存在于映射表中,存在则执行重命名,否则跳过并提示。

注意事项

  • 格式校验:确保albumsids.txt每行严格遵循唯一ID_原文件夹名称格式,唯一ID部分不能包含下划线(若需包含,需调整分割逻辑)。
  • 安全测试:首次运行时可将ren命令改为echo ren,预览所有重命名操作,确认无误后再移除echo执行实际修改。
  • 延迟扩展:启用EnableDelayedExpansion确保变量动态读取和赋值正常工作。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:20:32