我目前正在尝试将外部字幕文件(.ass 文件)合并到 mkv 文件中,但遇到循环问题。
我最近的尝试是:
set mkvmerge="C:\Program Files\MKVToolNix\mkvmerge.exe"
set output_folder=G:\tada kun\muxed
set counter = 01
set test='G:\tada kun\subs\\[Kaya] Tada-Kun Wa Koi O Shinai - %counter% (Bd 1080P X.265 Flac).ass'
for /r %%a in (*.mkv) do call %mkvmerge% -o "%output_folder%\%%~na.mkv" --audio-tracks 1 --language 0:jpn --default-track 0:yes --language 1:jpn --default-track 1:yes "%%a" --language 0:eng --default-track 0:yes "%test%" --attachment-name OpenSans-Semibold.ttf --attach-file ^"G:\tada kun\OpenSans-Semibold.ttf^" --track-order 0:0,0:1,1:0
我不确定如何在这里增加计数器,但主要问题是当我调用测试变量时计数器不显示。对此的任何帮助将不胜感激。
counter
当我调用测试变量时不显示。这将创建一个名为
counter
(注意尾随空格)的变量。正确的做法是:
为了迎合值可能包含空格的时代:
但是,在您的情况下(使用计数器)您需要使用不同形式的
set
:Where
/a
允许您在变量上使用算术表达式。我不确定如何在
counter
这里增加。利用:
检索值有点棘手。首先,您必须使用启用延迟扩展
这允许在执行时而不是在解析时评估变量。如果您不这样做,那么循环中的变量将扩展为初始值而不是更新后的值。
然后检索您使用的值
!counter!
而不是%counter%
.使用
!counter!
扩展时,每次执行该行时都会执行扩展,或者对循环中的每个循环执行扩展for
。把它们放在一起
笔记:
set test...
已移入for
循环内并"
使用 s 代替'
s。"%test%"
已被替换"!test!"
为使用延迟(执行)时间扩展延伸阅读