No momento, estou tentando mesclar arquivos de legenda externos (arquivos .ass) em um arquivo mkv, mas estou enfrentando problemas com looping.
Minha última tentativa nisso:
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
Não tenho certeza de como incrementar o contador aqui, mas o principal problema é que o contador não aparece quando chamo a variável de teste. Qualquer ajuda com isso seria muito apreciada.
counter
não aparece quando chamo a variável de teste.Isso cria uma variável chamada
counter
(observe o espaço à direita).A maneira correta de fazer isso é:
E para atender as vezes que o valor pode conter um espaço:
No seu caso, no entanto (usando um contador), você precisa usar uma forma diferente de
set
:Where
/a
permite que você use expressões aritméticas na variável.Não tenho certeza de como incrementar
counter
aqui.Usar:
Para recuperar o valor é um pouco mais complicado. Primeiro você deve ativar a expansão atrasada usando
Isso permite que as variáveis sejam avaliadas no tempo de execução, e não no tempo de análise. Se você não fizer isso, as variáveis em loops serão expandidas para o valor inicial e não para o valor atualizado.
Em seguida, para recuperar o valor, você usa
!counter!
em vez de%counter%
.Ao usar
!counter!
a expansão é realizada cada vez que a linha é executada ou para cada loop em umfor
loop.Juntando tudo
Observação:
set test...
foi movido dentro dofor
loop e"
s usado em vez de'
s."%test%"
foi substituído por"!test!"
usar expansão de tempo atrasada (execução)Leitura adicional