批量为SRT字幕文件添加指定开头字幕的技术求助
批量为SRT字幕文件开头添加自定义标题字幕的解决方案
需求说明
需要为文件夹内的所有SRT字幕文件开头添加固定格式的字幕块,其中字幕内容替换为对应文件的文件名(不含后缀),格式如下:
0 00:00:00,001 --> 00:00:02,100 "Filename"
有效批处理脚本
无需转换文件格式,直接处理SRT文件,通过临时文件过渡避免覆盖原内容:
@echo off setlocal enabledelayedexpansion for %%f in (*.srt) do ( set "filename=%%~nf" :: 写入自定义开头字幕到临时文件 echo 0 > "%%f.tmp" echo 00:00:00,001 --> 00:00:02,100 >> "%%f.tmp" echo "!filename!" >> "%%f.tmp" echo. >> "%%f.tmp" :: 追加原SRT内容 type "%%f" >> "%%f.tmp" :: 替换原文件 move /y "%%f.tmp" "%%f" ) echo 所有SRT文件处理完成! pause
脚本说明
@echo off:关闭命令回显,简化输出内容setlocal enabledelayedexpansion:启用延迟变量扩展,确保for循环中能正确读取动态生成的文件名变量%%~nf:提取当前遍历文件的文件名(不含后缀)- 临时文件
%%f.tmp:先写入自定义字幕块,再追加原文件内容,最后覆盖原文件,避免直接操作原文件导致的内容覆盖问题 echo.:添加空行,符合SRT字幕块之间用空行分隔的格式规范
针对你之前问题的说明
- COPY命令问题:使用copy合并文件时,会自动在文件末尾添加十六进制的
1A(EOF字符),导致SRT文件格式损坏,且无法直接插入动态的文件名变量 - ECHO/TYPE直接操作原文件:
>会直接覆盖原文件内容,>>是追加到文件末尾,无法实现"添加到开头"的需求,必须通过临时文件中转
内容的提问来源于stack exchange,提问作者Highlander
相关产品推荐
相关产品推荐

