1

Я пытаюсь написать скрипт для использования с HandbrakeCli для преобразования .mkv-файлов в XBOX 360-совместимые mp4-файлы.

#!/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

Проблема заключается в том, что имя файла назначения (в соответствии с выводом из HandbrakeCli) включает полный путь к входному файлу. Естественно, меня интересует только имя файла без расширения, поскольку я добавляю .mp4.

Я не привык к написанию сценариев, поэтому помощь очень ценится!

2 ответа2

3

Сначала удалите путь:

outf=${f##*/}

Затем измените расширение:

outf=${outf%.*}.mp4

(Не обязательно в таком порядке, конечно.)

2

Так как вы знаете расширение вашего входного файла, вы можете сказать

new=~/Movies/Handbrake/"$(basename "$f" .mkv)".mp4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .