首页 > 解决方案 > 将多个 .ttf 文件批量附加到 .mkv

问题描述

好的,我对此完全陌生...基本上我正在使用一个名为 mkvmerge 的工具将多个字体文件(.ttf)附加到 .mkv 文件。我已将 .mkv 文件与我想附加的相应字体一起放入文件夹中。

我的目标是创建一个批处理,创建所有 .mkv 文件的副本以及所有添加的附件,并将它们存放在父目录中新创建的文件夹(即修订版)中。

从一个文件夹开始:

mkdir Revised

for %%A in (*.mkv) do "%mkvmerge%" -q -o "Revised\%%A" "%%A" --attachment-mime-type application/x-truetype-font --attach-file "%%~.ttf"

如果我将“%%~.ttf”更改为实际的 .tff 文件名(即

mkdir Revised

    for %%A in (*.mkv) do "%mkvmerge%" -q -o "Revised\%%A" "%%A" --attachment-mime-type application/x-truetype-font --attach-file "sans serif.ttf"

我最终会得到新创建的 Revised 文件夹,其中包含一个 .mkv 文件,其中 sans serif.tff 文件附加在 .mkv 文件本身中。但是我想添加多个 .ttf 文件而不单独命名它们。(网上搜索好像需要“$file”之类的东西,虽然我不知道怎么用)

接下来,如果我有一个包含多个子文件夹的父文件夹:

mkdir Revised

for /R %%A in (*.mkv) do "%mkvmerge%" -q -o "Revised\%%A" "%%A" --attachment-mime-type application/x-truetype-font --attach-file "%%~.ttf"

这完全是行不通的。我敢肯定,不仅仅是因为“%%~.ttf”问题。

我知道这可能有点过于雄心勃勃,所以如果有人可以帮助解决我问题的前半部分,那就太好了。提前非常感谢。

ps:如果有人需要了解mkvmerge的具体命令来帮忙:https ://mkvtoolnix.download/doc/mkvmerge.html

更新:第一部分

mkdir Revised

for %%x in (*.ttf) do (
for %%A in (*.mkv) do "%mkvmerge%" -q -o "Revised\%%A" "%%A" --attachment-mime-type application/x-truetype-font --attach-file "%%x"
)

它似乎工作得更好,但我认为脚本现在将添加和删除 .ttf 文件,直到文件夹中的最后一个 .ttf 文件仍然存在。

标签: batch-filebatch-processingtruetypemkv

解决方案


请试一试。(请记住将%mkvmerge%变量设置为可执行路径):

@echo off
set "mkvmerge=C:\Some Path\mkvmerge.exe"
for %%a in (*.ttf) do (
    for /f %%i in ('dir /s /b /a-d *.mkv ^| findstr /vi Revised') do (
       if not exist "%%~dpiRevised" mkdir "%%~dpi\Revised"
       if not exist "%%~dpiRevised\%%~nxi" copy "%%~fi" "%%~dpiRevised"
       "%mkvmerge%" -q -o "%%~dpiRevised\%%~ni_rev%%~xi" "%%~dpiRevised\%%~nxi" --attachment-mime-type application/x-truetype-font --attach-file "%%~dpi%%a"
  )
)

因此,要解释您的示例出了什么问题:

在 for 循环中,您从mkv根文件夹内部获取 apply ,并将ttf文件应用到它并创建mkv附加ttf到目录的新文件Revised,然后ttf再次从根目录复制,覆盖目录有一个新的应用了新的目录等。mkvRevisedttf

相反,我们需要先将mkv文件复制到Revised目录中,然后将第一个ttf文件应用到自身,Revised然后将mkv已附加的文件ttf应用ttf到它,直到所有ttf文件都应用到原始文件的新mkv内部并且所有文件都将保留在父文件夹中。Revisedmkvttf

请注意,如果我解释的任何内容没有意义,请告诉我,我会改写。


推荐阅读