我想使用以下命令将文件夹中的所有 .mkv 文件批量转换为 .mp4 格式:
ffmpeg -i File1.mkv -map 0 -map -0:s -c copy File1.mp4
但问题是我必须手动对文件夹中的每个文件执行此操作。我浏览过各种帖子,但没有一个指定-map
选项。
我使用的是 Windows 操作系统,以下是我迄今为止尝试过的:
for %%A IN (*.mkv) DO ffmpeg -i "%%A" -map 0 -map -0:s -c copy "%%A.mp4"
pause
运行正常,但唯一的问题是现在我正在获取.mkv
转换后的.mp4
文件。
我该如何摆脱不需要的文件?.mkv
答案1
@echo off
Setlocal EnableDelayedExpansion
for %%i in ("D:\Path\To\Folder\Your\Files\*.mkv"
)do ffmpeg -i "%%~fI" -map 0 -map -0:s -c copy "%%~dpnI.mp4"
Endlocal & timeout /t -1
尝试使用扩展变量:
"%%~fI" - expands %%I to a fully qualified path name ==> input file
"%%~dI" - expands %%I to a drive letter only
"%%~pI" - expands %%I to a path only
"%%~nI" - expands %%I to a file name only
rem :: Concatenating "%%~dI" + "%%~pI" + "%%~nI" + ".mp4" you can get...
"%%~dpnI.mp4" ==> output file
进一步阅读:
[√]启用延迟扩展