Windows CMD批处理脚本



我创建了一个批处理文件(.bat),它使用FFmpeg来转码各种视频(带有*)。mov或*.mp4文件扩展名)从输入文件夹到输出文件夹(扩展名为*.mkv)作为批处理过程(Windows 10环境)。输入文件夹中的文件名(没有扩展名)应复制到新创建的输出文件名(具有新的文件扩展名*.mkv)。

@echo off
set CMD=ffmpeg -c:v ffv1 -level 3 -g 1 -coder 1 -context 1 -pix_fmt + -slices 24 -slicecrc 1 -report -c:a pcm_s24le
FOR /R input_folder %%G IN (*.mov,*.mp4) DO (
echo %%G
call set outputfile=%%~nG%.mkv
call set inputfile=%%~nG%%~xG
echo %CMD% -y output_folder/%outputfile% -i %inputfile%
)

但是这个脚本没有像预期的那样工作,也就是说什么都没有发生。你有办法解决这个问题吗?提前感谢!

下面是一个例子,显示了我从评论中得到的建议,并根据评论中的要求添加了删除文件的功能。这里假设ffmpeg在成功时返回错误级别0(如果处理失败,您不想删除它们),并且在当前工作目录中存在一个名为output_folder的现有目录。

@Echo Off
SetLocal EnableExtensions
Set "CMD=ffmpeg.exe -c:v ffv1 -level 3 -g 1 -coder 1 -context 1 -pix_fmt +"
Set "CMD=%CMD% -slices 24 -slicecrc 1 -report -c:a pcm_s24le"
For /R "input_folder" %%G In (*.mov *.mp4) Do (
Echo %%G
%CMD% -y "output_folder%%~nG.mkv" -i "%%G"
If Not ErrorLevel 1 Del /A /F "%%G"
)

最新更新