OK, eu acho que você tem um monte de arquivos como
ant.mov
bug.mov
cat.mov
dog.mov
︙
em um diretório (pasta a.k.a), e você quer fazer
HandBrakeCLI.exe (blah blah blah) -i ant.MOV -o ant.mp4 HandBrakeCLI.exe … … -i bug.MOV -o bug.mp4 HandBrakeCLI.exe … … -i cat.MOV -o cat.mp4 HandBrakeCLI.exe … … -i dog.MOV -o dog.mp4 ︙
para todos os arquivos *.mov
.
Isso é bastante simples:
for %F in (*.mov) do HandBrakeCLI.exe (blah blah blah) -i "%F" -o "%~nF.mp4"
O for %F in (*.mov)
executa um loop
em que %F
assume cada nome *.mov
aplicável.
Então o comando seguindo o do
é executado para cada arquivo,
com %F
obviamente sendo substituído pelo nome do arquivo .mov
.
(Nota: o F
faz distinção entre maiúsculas e minúsculas).
(Você pode ser capaz de passar sem as aspas -
ou seja, apenas %F
e não "%F"
-
mas então ele falhará se você tiver qualquer nome de arquivo
com espaço (s) ou outros caracteres especiais.)
%~nF
é substituído pela parte n do nome do arquivo
(não incluindo a extensão), então %~nF.mp4
se torna o nome do arquivo de saída.
Você pode dividir isso em várias linhas, porque o seu comando atual é tão longo e / ou porque você quer fazer outras coisas no loop. Você pode fazer isso com parênteses:
for %F in (*.mov) do ( HandBrakeCLI.exe (blah blah blah) -i "%F" -o "%~nF.mp4" (other command(s) featuring "%F", "%~nF", etc.) )
Digite for /?
para ver uma lista de todos os códigos ~
.
(Por exemplo, %~dF
fornece a letra da unidade e %~pF
fornece o caminho.
A documentação não é clara sobre o fato
que você pode combinar os modificadores;
Por exemplo, %~dpnF
fornece a unidade, o caminho e o nome.
mas não a extensão - como se você tivesse digitado %~dF%~pF%~nF
.)
Você também pode dividir comandos longos em várias linhas com ^
:
for %F in (*.mov) do ( HandBrakeCLI.exe --preset-import-file "preset-name.json" ^ -Z "preset-name" -i "%F" -o "%~nF.mp4" (other command(s) featuring "%F", "%~nF", etc.) )
Todos os itens acima funcionam no Prompt de Comando (linha de comando).
A mesma coisa funciona em um script em lote,
exceto que você deve substituir cada %
por %%
:
for %%F in (*.mov) do ( HandBrakeCLI.exe --preset-import-file "preset-name.json" ^ -Z "preset-name" -i "%%F" -o "%%~nF.mp4" (other command(s) featuring "%%F", "%%~nF", etc.) )
Isso é testado no Windows7, mas ficaria muito surpreso se não funcionasse no Windows10.