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

如何让FFmpeg批处理脚本逐个处理150个文件夹中的MP4文件

批量逐个处理视频文件夹的BAT脚本实现

需求说明

现有单文件夹MP4处理脚本,可生成去Logo后的视频文件,需扩展为逐个遍历处理指定目录下的150个视频文件夹,避免同时运行多进程耗尽系统资源。

原单文件夹处理脚本:

for %%a in ("*.mp4") do ffmpeg -i "%%a" -filter:v "crop=1280:700:0:0" -c:a copy "%%~na-old.mp4"
for %%a in ("*.mp4") do ffmpeg -i "%%~na-old.mp4" -vf scale=1280:720,setsar=1:1  "%%~na-no-Logo.mp4"
for %%a in ("*.mp4") do del "%%~na-old.mp4"

优化后的批量处理脚本

将以下脚本保存为Batch_Process_Videos.bat,修改ROOT_DIR为你的视频文件夹所在的根目录(比如D:\Video_Folders):

@echo off
setlocal enabledelayedexpansion

:: 替换为你的视频文件夹根目录
set "ROOT_DIR=D:\Video_Folders"

:: 遍历根目录下的所有子文件夹
for /d %%d in ("%ROOT_DIR%\*") do (
    echo 开始处理文件夹: %%~fd
    :: 进入目标文件夹
    pushd "%%~fd"
    
    :: 执行原有的MP4处理逻辑(合并循环减少重复遍历)
    for %%a in ("*.mp4") do (
        ffmpeg -i "%%a" -filter:v "crop=1280:700:0:0" -c:a copy "%%~na-old.mp4"
        ffmpeg -i "%%~na-old.mp4" -vf scale=1280:720,setsar=1:1  "%%~na-no-Logo.mp4"
        del "%%~na-old.mp4"
    )
    
    :: 返回上级目录
    popd
    echo 完成文件夹处理: %%~fd
    echo.
)

echo 所有文件夹处理完成!
pause

关键逻辑说明

  • for /d %%d in ("%ROOT_DIR%\*"):遍历指定根目录下的所有子文件夹,%%d代表每个文件夹的完整路径
  • pushd "%%~fd":进入当前遍历到的文件夹,确保后续FFmpeg命令在目标文件夹内执行
  • 合并原脚本的三次for循环:原脚本重复遍历MP4文件三次,优化后仅遍历一次,减少冗余操作
  • popd:处理完当前文件夹后自动返回根目录,继续下一个文件夹的处理
  • 状态输出:通过echo打印处理进度,方便实时查看当前处理的文件夹

额外建议

  • 若需排除特定文件夹,可在for /d循环内添加判断,例如:if not "%%~nd"=="不需要处理的文件夹名"
  • 若FFmpeg未加入系统环境变量,需在脚本中指定其完整路径,比如"C:\Program Files\ffmpeg\bin\ffmpeg.exe"

内容的提问来源于stack exchange,提问作者Ashraf El-Madhoun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:36:03