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

FFmpeg批量处理TS文件时批处理SET变量失效问题求助

FFmpeg批量处理TS文件时批处理SET变量失效问题求助

嘿,我一眼就看出你碰到的是批处理里经典的延迟环境变量扩展坑了!咱们先理清楚问题出在哪:

你写的for循环是一个代码块(就是括号里的所有内容),批处理在执行这个代码块之前,会先把里面所有用%变量名%包裹的变量都替换成它们当前的实际值——但这时候moviename还没被赋值呢,所以到FFmpeg命令里的时候,%moviename%其实是空的,自然就没法正常设置视频标题了。

别担心,改起来很简单,只需要两步:

  • 第一步:在脚本最开头加上setlocal enabledelayedexpansion,开启延迟扩展功能,这样就能用!变量名!的方式实时获取变量的最新值。
  • 第二步:把FFmpeg命令里的%moviename%改成!moviename!,让它在循环执行时才去读取变量的当前值。

下面是修改后的完整代码:

@echo off
setlocal enabledelayedexpansion

@for /r %%F in (*.ts) do (
    echo %%~nxF
    set /P moviename=NEW VIDEO NAME:
    "c:\program files\ffmpeg" -y -i "%%F" -map 0 -c copy -metadata title="!moviename!" "%%~pnF.mp4" 2>> output.log
)

endlocal

另外补充个小提醒:如果你的视频名字里包含!这个符号,延迟扩展可能会把它吃掉,这时候就得额外处理,但一般日常使用的话上面的代码完全够用啦。

备注:内容来源于stack exchange,提问作者Tomas CH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 14:39:32