batch-file - 创建递归 ffmpeg 转换器

标签 batch-file video ffmpeg

我正在尝试创建某种脚本,它将它在文件夹中检测到的任何视频文件(也扫描子文件夹)转换为同名的 .avi 文件,在同一个地方,然后删除原始文件。我并没有真正将 cmd 用于任何编程/脚本,所以我对我怀疑是一些非常简单的语法问题感到困惑。

如果有人熟悉编码和ffmpeg,请指出编码选项是否错误(我现在在黑暗中磕磕绊绊)。

使用 this thread ,我正在使用目前类似的东西:

dir/b/s *.(mkv|mp4|m4v|wmv) >listing.txt  #Make a list of all the files with certain extensions, for reading.
for /F "delims=;" %%F in (listing.txt) do ffmpeg.exe  -i "%%F" -c:v libx264 -preset slow -crf 20 -c:a libvo_aacenc -b:a 128k "%%~na.avi"
#Then to delete original files
for /F "delims=;" %%F in (listing.txt) do del %%F
del listing.txt

我遇到的第一个问题是我希望能够用所有常见的视频类型填充列表。我在想象 cmd 有一些类似于 perl 字符串匹配的语法,例如A(B|C)将匹配我可以模仿匹配任何视频文件扩展名的 AB 和 AC? (我已经在上面的代码中编写了它来说明这一点,但我知道它不起作用)。

我希望这足以说明我正在尝试的内容。

最佳答案

目录 *.ext1 *.ext2

但是,如果期望名称中有空格,最好指定完整路径并使用引号。

Dir "%userprofile%\documents\*.avi" "%userprofile%\documents\*.mp4" /a /s /b

For 更简单是 forfiles命令。但不适合多种文件类型。

也可以是一行
@for /f "usebackq delims=" %A in (`dir "%Userprofile%\documents\*.avi" "%Userprofile%\documents\*.mp4" /a /s /b`)  do @echo %A

在批处理文件中使用 %%A,如果键入命令则使用 %A。

关于batch-file - 创建递归 ffmpeg 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27093129/

相关文章:

android - 静默安装 Android Studio?

json - 解析和转换 TED 演讲 JSON 字幕

ffmpeg 连接导致第二个输入文件的输出错误/乱码

windows - 如何使批处理文件在继续之前等待另一个调用的所有进程完成

WordPress:媒体错误:不支持格式或未找到来源

c - 仅对视频文件的部分进行 Remux 和分段,而输出没有差异

用于递归搜索和重命名的 Bash 脚本

batch-file - 更改 WMIC 结果的格式

batch-file - 如何启动相对路径中有空格的程序?

windows - 为什么在其搜索字符串中包含变量扩展的 `findstr` 在涉及管道时会返回意外结果?