Script de shell para conversão de vídeo em lote

1

Estou tentando escrever um script para uso com o HandbrakeCli para converter arquivos .mkv em arquivos mp4 compatíveis com o XBOX 360.

#!/bin/bash
for f in "$@"
do
    echo "$f"
    HandbrakeCli -i "$f" -o ~/Movies/Handbrake/"${f%.*}.mp4" --preset "Normal" --mixdown "stereo" --subtitle "1" --width 720 --keep-display-aspect
done

O problema é que o nome do arquivo de destino (de acordo com a saída do HandbrakeCli) inclui o caminho completo para o arquivo de entrada. Naturalmente estou interessado apenas no nome do arquivo sem extensão desde que eu adicione .mp4.

Eu não estou acostumado a scripts de shell, então a ajuda é muito apreciada!

    
por gabbsmo 03.10.2011 / 12:47

2 respostas

3

Primeiro, remova o caminho:

outf=${f##*/}

Em seguida, altere a extensão:

outf=${outf%.*}.mp4

(não necessariamente nessa ordem, claro.)

    
por 03.10.2011 / 13:00
2

Como você conhece a extensão do seu arquivo de entrada, pode dizer

new=~/Movies/Handbrake/"$(basename "$f" .mkv)".mp4
    
por 03.10.2011 / 16:39