Eu escrevi um arquivo em lotes que leva um parâmetro de entrada. Eu escrevi originalmente para realizar uma operação em %1
supondo que era um nome de arquivo, mas depois convertido para esperar %1
é uma pasta e itera em todos os itens nessa pasta e executa a operação neles usando um loop for da seguinte forma:
for %%f in (%1/*.mkv) do (
ffmpeg -y -i "%%f" -vcodec copy -acodec aac -b:a 192k "e:\temp\%%~nxf"
)
Mas agora estou percebendo que seria ótimo lidar com pastas e arquivos no mesmo parâmetro de entrada. Não consigo lidar com isso usando diferentes sinalizadores de entrada porque quero poder executar esse script a partir de um menu Enviar com botão direito do mouse para.
Como posso diferenciar entre um arquivo e uma pasta de um único parâmetro de entrada (e obviamente executar ações diferentes com base em cada)?
windows
command-line
batch-file
Mordred
fonte
fonte
Respostas:
Para argumentos e para variáveis existe o modificador
~a
retornando os atributos.Vejo https://ss64.com/nt/syntax-args.html
Se os atributos contiverem a letra
d
é um diretório.fonte