关于调整HandbrakeCLI批量自动转换脚本输入输出路径的技术咨询
关于调整HandbrakeCLI批量自动转换脚本输入输出路径的技术咨询
嘿,我来帮你把这个批量转换脚本调整成从C:\unc读取MKV源文件,最终把转换完成的MP4文件输出到C:\enc目录里。原来的脚本是把转换后的文件存在源文件同目录,现在我们修改路径逻辑,让所有输出都统一到指定目录。
修改后的完整脚本
@echo off SET "SOURCE_DIR=C:\unc" SET "OUTPUT_DIR=C:\enc" :: 确保输出目录存在,不存在则创建 if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%" :: 遍历源目录下所有MKV文件 for /R "%SOURCE_DIR%" %%F in (*.mkv) do ( :: 用HandBrakeCLI转换生成临时文件,输出到指定目录 "C:\Program Files\HandBrake\HandBrakeCLI.exe" --preset-import-file anime.json -Z "anime" --optimize --align-av -i "%%~fF" -o "%OUTPUT_DIR%\%%~nF_conv.mp4" :: 检查临时转换文件是否生成成功 if exist "%OUTPUT_DIR%\%%~nF_conv.mp4" ( :: 用ffmpeg迁移原文件元数据到转换后的文件,输出到指定目录 "C:\Conversion\ffmpeg\bin\ffmpeg.exe" -i "%%~fF" -i "%OUTPUT_DIR%\%%~nF_conv.mp4" -map 1 -map_metadata 0 -c copy "%OUTPUT_DIR%\%%~nF.mp4" :: 删除源MKV文件和临时转换文件 del "%%~fF" del "%OUTPUT_DIR%\%%~nF_conv.mp4" ) )
关键改动说明
- 新增了
SOURCE_DIR和OUTPUT_DIR变量,让路径配置更清晰,后续要改路径直接修改这两行即可 - 增加了
mkdir命令确保输出目录存在,避免因为目录不存在导致转换失败 - 把所有输出路径里的
%%~dpF(源文件所在目录)替换成%OUTPUT_DIR%,这样临时文件和最终文件都会输出到C:\enc - 保留了原脚本的核心逻辑:HandBrakeCLI转换、ffmpeg迁移元数据、清理源文件和临时文件
注意事项
- 确保
anime.json预设文件和脚本在同一目录,或者你可以给它加上完整路径(比如"C:\YourPresetPath\anime.json") - 如果
C:\enc是系统盘目录,可能需要右键以管理员身份运行脚本,避免权限不足导致文件无法写入 - 转换前建议先拿单个小文件测试脚本,确认输出路径和转换效果符合预期再批量运行
备注:内容来源于stack exchange,提问作者 Opaque Oreo




