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

批处理for循环中调用FFmpeg后ANSI转义颜色失效问题求助

批处理for循环中调用FFmpeg后ANSI转义颜色失效问题求助

我正在尝试用ANSI转义码给一个批量处理视频文件的批处理脚本添加文本颜色效果。

现在遇到一个头疼的问题:脚本里第29行的FFmpeg命令执行后,后续的颜色输出就完全失效了。如果把这行FFmpeg代码注释掉,所有颜色显示都正常工作。有没有大佬能帮我看看问题出在哪?

以下是我的完整脚本代码:

@echo off

REM Change the console encoding to UTF-8 (for Nordic characters).

chcp 65001

set filelist=%1

setlocal enabledelayedexpansion

REM Define ESC escape character

for /f %%d in ('echo prompt $E ^| cmd') do (set "ESC=%%d")

for /f "usebackq tokens=*" %%a in ("%filelist%") do (

set Bytes=%%~za

set MB=!Bytes:~0,-6!

set Timestamp=%%~ta

set TSYYYY=!Timestamp:~6,4!

set TSYY=!Timestamp:~8,2!

set TSMM=!Timestamp:~3,2!

set TSDD=!Timestamp:~0,2!

set TSHR=!Timestamp:~11,2!

set TSMIN=!Timestamp:~14,2!

set TSDato=!TSYY!!TSMM!!TSDD!

set TSTid=!TSHR!!TSMIN!

echo !ESC![33mConvert and compress !Bytes! Bytes sized %%~xa file to .MP4!ESC![0m

REM Problem area. Below ffmpeg command cancels using ESC color codes. If REMed out, coloring works perfectly.

ffmpeg -hide_banner -loglevel quiet -i "%%~da%%~pa%%~na%%~xa" -vcodec libx265 -crf 28 "%%~da%%~pa%%~na_!TSDato!-!TSTid!.mp4"

REM Clean up. If new file created, delete original file

if exist "%%~da%%~pa%%~na_!TSDato!-!TSTid!.mp4" (del "%%~da%%~pa%%~na%%~xa")

echo !ESC![42mSummary!ESC![0m

echo !ESC![34mInputfile="%%~a"!ESC![0m

echo !ESC![32mOutputfile="%%~da%%~pa%%~na_!TSDato!-!TSTid!.mp4"!ESC![0m

echo !ESC![42mFile "%%~na" optimisation complete!ESC![0m

pause

)

echo.

echo All files optimised!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 10:45:30