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

如何按条件递归批量重命名SRT字幕文件至对应视频文件名?

解决递归批量重命名字幕文件的Batch脚本方案

我明白你折腾了好几个小时都没搞定这个字幕重命名的需求,你的场景和规则我都理得很清楚:要递归遍历目录树,把每个电影子文件夹里的SRT字幕文件,重命名为同目录下对应视频文件(AVI/MKV/MP4)的名字;如果有多个SRT文件,优先选体积最大的;如果字幕文件名里带有SDH标识,要把后缀改成视频文件名.SDH.srt。

先说说你原来脚本的核心问题:

  • 没有正确实现递归遍历(for /R的用法没结合目录处理逻辑)
  • 只处理了AVI格式,没覆盖MKV/MP4
  • 批量ren *.srt会把所有字幕改成同一个名字,导致后续文件直接覆盖前面的,这就是只能处理第一个文件的原因
  • SDH的判断逻辑太粗糙,没考虑大小写(比如ENG-SDH.SRT、randomstuff.eng.srt)和标识的不同位置
  • 没有处理「多个SRT选最大文件」的优先级规则

完整解决方案脚本

@echo off
setlocal enabledelayedexpansion

:: 递归遍历所有子目录,替换PARENT_FOLDER为你的实际父目录路径
for /R "PARENT_FOLDER" %%D in (.) do (
    :: 进入当前目录
    pushd "%%D"

    :: 查找当前目录下的视频文件(AVI/MKV/MP4,不区分大小写)
    for %%V in (*.avi *.mkv *.mp4) do (
        :: 获取视频文件的基础名(不含后缀)
        set "video_name=%%~nV"
        
        :: 收集当前目录下的所有SRT文件,按文件大小降序排序,取第一个(最大的)
        for /F "delims=" %%S in ('dir /B /O:-S /A:-D *.srt 2^>nul') do (
            set "srt_file=%%S"
            goto :process_srt
        )
        goto :next_dir

        :process_srt
        :: 判断当前SRT文件名是否包含SDH(不区分大小写)
        echo !srt_file! | findstr /I "SDH" >nul
        if !errorlevel! equ 0 (
            :: 带SDH标识,重命名为 视频名.SDH.srt
            ren "!srt_file!" "!video_name!.SDH.srt"
        ) else (
            :: 不带SDH,重命名为 视频名.srt
            ren "!srt_file!" "!video_name!.srt"
        )
    )

    :next_dir
    :: 回到上级目录
    popd
)

echo 字幕重命名完成!
pause

脚本关键部分解释

  1. 递归遍历目录:for /R "PARENT_FOLDER" %%D in (.) do 会遍历指定父目录下的所有子目录,记得把PARENT_FOLDER替换成你的实际路径(比如D:\Movies)。
  2. 多格式视频匹配:for %%V in (*.avi *.mkv *.mp4) 覆盖了主流视频格式,确保不会遗漏目标文件。
  3. 选最大字幕文件:dir /B /O:-S /A:-D *.srt 会列出当前目录的SRT文件并按体积从大到小排序,for /F取第一个结果就是优先级最高的字幕文件。
  4. 智能SDH识别:findstr /I "SDH" 不区分大小写查找SDH字符串,不管标识在文件名的开头、中间还是结尾都能正确识别。
  5. 延迟变量扩展:setlocal enabledelayedexpansion 确保循环内部修改的变量能被正确读取,避免batch脚本的变量作用域问题。

测试建议

  • 首次测试可以把ren改成echo ren,先预览所有重命名操作,确认逻辑正确后再实际执行。
  • 如果某个目录下有多个视频文件,脚本会对每个视频都处理一次字幕,但你的场景里每个电影文件夹通常只有一个视频,这个情况可以忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:57:32