我尝试使用批处理脚本批量添加封面图片到 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 的更多信息。