如何修改批处理文件以支持拖拽处理视频文件?
修改批处理实现固定路径编码器+拖拽视频编码
需要将批处理与nvencc文件夹固定存放(如D:\Encoder),支持将外部硬盘中的视频拖拽到批处理文件上直接生成代理文件,替代原需将批处理放在视频目录的操作。
修改后的完整批处理代码
@echo off setlocal enabledelayedexpansion set t0=%TIME%, %DATE% :: 固定编码器路径,请根据实际存放位置修改 set "NVEncPath=D:\Encoder\nvencc\NVEncC64.exe" :: 代理文件保存目录,可自行修改 set "ProxyDir=C:\Users\Mypc\Desktop" :: 检查编码器是否存在 if not exist "%NVEncPath%" ( echo 错误:未找到编码器程序 %NVEncPath% pause exit /b 1 ) :: 处理拖拽传入的所有文件 if "%~1"=="" ( echo 请将视频文件拖拽到本批处理文件上执行 pause exit /b 1 ) for %%i in (%*) do ( :: 重置颜色参数变量,避免残留 set "nvcm=" :: 检查是否为支持的视频格式 if /i "%%~xi"==".mp4" goto process_file if /i "%%~xi"==".avi" goto process_file if /i "%%~xi"==".mov" goto process_file if /i "%%~xi"==".wmv" goto process_file if /i "%%~xi"==".ts" goto process_file if /i "%%~xi"==".m2ts" goto process_file if /i "%%~xi"==".mkv" goto process_file echo 跳过非视频文件:%%i goto next_file :process_file :: 设置非AVI文件的颜色参数 if /i not "%%~xi"==".avi" set "nvcm=--colorprim auto --transfer auto --colormatrix auto --colorrange auto" :: 检查代理文件是否已存在 if not exist "%ProxyDir%\%%~ni_proxy.mp4" ( echo 正在处理:%%i "%NVEncPath%" -i "%%i" -o "%ProxyDir%\%%~ni_proxy.mp4" --output-res 960x-2 -c h264 --preset quality --cqp 23:25:28 --aq-strength 10 --ref 1 --bframes 0 --gop-len 15 --lookahead 15 --qp-max 30 --aq --cabac --mv-precision q-pel --audio-codec aac --audio-bitrate 384 --avsync cfr !nvcm! ) else ( echo 代理文件已存在,跳过:%%i ) :next_file ) powershell write-host -fore cyan "====================== Processing is FINISHED =======================" echo ---------------------------- echo 批处理开始时间:%t0% echo 批处理结束时间:%TIME%, %DATE% echo ---------------------------- pause endlocal
关键修改说明
- 固定编码器路径:通过
NVEncPath变量指定编码器绝对路径,确保批处理能直接找到程序,无需将编码器复制到视频目录 - 支持拖拽操作:用
%*捕获所有拖拽的文件,遍历处理每个传入文件;增加无文件拖拽时的提示逻辑 - 变量状态重置:每次循环重置
nvcm变量,避免前一个文件的参数残留影响后续处理 - 格式校验:增加对拖拽文件格式的判断,自动跳过非支持的视频文件
- 错误前置检查:启动时先验证编码器是否存在,避免因路径错误导致无效执行
- 延迟变量扩展:启用
enabledelayedexpansion确保循环内的nvcm变量能正确传递给编码器命令
使用步骤
- 将批处理文件(如
proxy generator.bat)和nvencc文件夹一同放到D:\Encoder目录下(确保NVEncC64.exe在D:\Encoder\nvencc\路径内) - 从外部硬盘或任意位置选择目标视频文件,直接拖拽到批处理文件图标上
- 等待编码完成,代理文件会自动保存到
ProxyDir指定的目录
内容的提问来源于stack exchange,提问作者rezpower
相关产品推荐
相关产品推荐

