Estou aprendendo scripts em lote e fiz alguns bons progressos (pouco, mas o suficiente para me ajudar a economizar tempo). Agora eu gostaria de trabalhar com variáveis. Eu tentei ler sobre variáveis e sei como usar% object% e substituí-lo em alguns casos simples. Mas não tenho nenhuma idéia de como usá-los com instruções "SE". O que estou tentando fazer é substituir o elemento% lng% por "eng" quando o elemento% lngf% for "en.srt".
IF lngf==en.srt SET lng==eng
IF lngf==es.srt SET lng==spa
FOR /R %%A IN (*.avi *.mp4 *.webm *.ogm *.ogv *.flv) do mkvmerge -o "%%~nA.mkv" "%%~A" --language 0:%lng% "%%~nA.%lngf%" --language 0:%lng% "%%~nA.%lngf%"
** o idioma aparece três vezes porque geralmente tenho três idiomas para legendas.
Minha saída é:
mkvmerge -o "vsshort.mkv" "C:\Users\Administrator\Desktop\pessoal\tests\video.avi" --language 0:eng "vsshort." --language 0:eng "video."
mkvmerge v30.1.0 ('Forever And More') 64-bit
Erro: The file 'video.' file can't be opened for reading: open file error.
Nota: mostra --language 0: eng duas vezes. Ele deve mostrar --language 0: eng e depois --language 0: spa.
IF %lngf%==en.srt SET lng=eng
. . . Você precisa ter certeza de definir o valor da variável antes que a IF
instrução o avalie.
%lngf%
e você não a definiu.
IF %lngf%==en.srt SET lng=eng
.. você também deseja citar em torno da variável, caso ela esteja vazia .. você também deseja citar em torno de sua linha definida, portanto, se houver espaços à direita que você não possa ver, eles não serão incluídos na variável. por exemploIF "%lngf%"=="en.srt" SET "lng=eng"
%
caracteres. Portanto, a última parte dessa primeira linha deve ser... set lng=eng
.