我已经创建了一个批处理文件(.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%
)但是这个脚本不像预期的那样工作,即什么也没有发生。你知道怎么解决这个问题吗?提前感谢!
发布于 2021-03-01 14:57:37
这里有一个示例,显示了我从注释中得到的建议,并按照注释中的要求添加了文件删除。这假设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"
)https://stackoverflow.com/questions/66419497
复制相似问题