Batch脚本如何按正确数字顺序批量拼接多个.ts文件为单个文件
Batch 按数字升序合并 TS 文件解决方案
可用脚本
直接复制以下内容保存为.bat文件,放到你的TS文件同目录下运行即可:
@echo off setlocal enabledelayedexpansion :: 基础配置,可根据实际情况修改 set "BaseName=A" set "OutputFile=joined_files.ts" set "StartNumber=1" :: 清理已存在的输出文件,避免内容重叠 if exist "%OutputFile%" del /f /q "%OutputFile%" set "FileNumber=%StartNumber%" :MergeLoop set "CurrentFile=%BaseName%%FileNumber%.ts" :: 当前序号文件不存在则结束合并 if not exist "!CurrentFile!" goto Finish if not exist "%OutputFile%" ( :: 第一个文件直接初始化输出文件 copy /b "!CurrentFile!" "%OutputFile%" >nul ) else ( :: 后续文件追加到输出文件末尾 copy /b "%OutputFile%" + "!CurrentFile!" "%OutputFile%" >nul ) set /a FileNumber+=1 goto MergeLoop :Finish echo 合并完成,总计合并 %FileNumber%-%StartNumber% 个文件 echo 输出文件路径:%~dp0%OutputFile% pause
原脚本问题说明
你之前写的脚本无法正常运行的核心原因有3个:
- 误用了未定义的变量
%G%,导致copy命令无法匹配到正确的TS文件 - 未开启延迟变量扩展,循环内修改的
FileNumber变量无法实时生效 - 拷贝逻辑错误,每次执行copy都会直接覆盖目标文件,而非按顺序追加内容,最终只会保留最后一个文件的内容
使用说明
- 如果你的文件前缀不是
A,修改BaseName变量的取值即可,比如文件命名为video1.ts就改为set "BaseName=video" - 如果文件序号不是从1开始,修改
StartNumber的取值即可,比如从10开始就改为set "StartNumber=10" - 脚本会严格按数字升序匹配文件,支持任意大小的编号,不会出现字典序排序错乱的问题
内容的提问来源于stack exchange,提问作者Parsh
相关产品推荐
相关产品推荐

