我想为文件夹中的所有 MKV 添加封面

我想为文件夹中的所有 MKV 添加封面

我尝试使用批处理脚本批量添加封面图片到 Windows 中的所有 MKV 文件,但做不到。我的文件结构如下:

Video1.mkv
Video1.jpg

视频和图像具有相同的文件名,唯一的区别是扩展名。

我尝试过以下命令:

FOR %%f IN (*.mkv) DO (
mkvpropedit.exe "%%~nf.mkv" --attachment-name "cover" --attachment-mime-type 
"image/jpeg" --add-attachment "%%~nf.jpg"
)

奇怪的是,这个命令对其他应用程序有效,但对 MKVPropedit 却无效。

结果是:

Error: The file '%%~nf.jpg' could not be opened for reading: open file error.

我的 jpg 文件没有损坏,所以我真的不知道该错误意味着什么。

答案1

您应该在 FOR 命令中使用不同的变量字母。字母 f 是路径名格式字母(完整列表为a, d, f, n, p, s, t, x)。例如,使用 G,如下所示:

FOR %%G IN (*.mkv) DO (mkvpropedit.exe "%%~nG.mkv" --attachment-name "cover" --attachment-mime-type "image/jpeg" --add-attachment "%%~nG.jpg")

据 SS64.com 报道G 是一个很好的选择,因为它提供了最长的字母序列,并且不与任何路径名格式字母冲突:

%%G 是一个不错的选择,因为它与任何路径名格式字母(a、d、f、n、p、s、t、x)都不冲突,并且提供了最长的非冲突字母序列以用作隐式参数。G > H > I > J > K > L > M

更远,如果您直接从命令提示符运行此命令,则需要使用单个 % 字符,而不是双个,如下所示:

FOR %G IN (*.mkv) DO (mkvpropedit.exe "%~nG.mkv" --attachment-name "cover" --attachment-mime-type "image/jpeg" --add-attachment "%~nG.jpg")

此 Stack Overflow回答提供有关在批处理脚本内外使用 FOR 的更多信息。

相关内容