我正在尝试编写一个脚本,与 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。
我不习惯使用 shell 脚本,因此非常感谢您的帮助!
答案1
首先删除路径:
outf=${f##*/}
然后更改扩展名:
outf=${outf%.*}.mp4
(当然,不一定按这个顺序。)
答案2
由于您知道输入文件的扩展名,因此您可以说
new=~/Movies/Handbrake/"$(basename "$f" .mkv)".mp4