我正在尝试创建某种类型的脚本,将其在文件夹中检测到的任何视频文件(也扫描子文件夹)转换为同名的.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吗? (我在上面的代码中写了它来说明这一点,但我知道它不起作用。)
我希望这足以试图说明我在尝试什么。
答案 0 :(得分:0)
dir * .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。