次のコマンドを使用して複数のmkvをmp4に変換したいと思います。
for i in $(ls *mkv); do ffmpeg -i $i -vcodec copy -acodec copy $i.mp4; done;
ただし、ファイル名にスペースとハイフンが含まれているため、コマンドは機能しません。 (手動でに切り替えると同じコマンドが機能します。The File - 01.mkv
)The\ File\ \-\ 01.mkv
それを操作するための最良の方法は何ですか?
答え1
変数を引用してコマンドの置換を避ける必要があります。
for i in ./*.mkv; do ffmpeg -i "${i}" -vcodec copy -acodec copy "${i}.mp4"; done
バラよりいつ二重引用符が必要ですか?引用の詳細な説明です。
私がこれを行ったとき、上記は.mkv.mp4
この問題を解決するための拡張子を持つファイルを作成しました。
for i in ./*.mkv; do ffmpeg -i "${i}" -vcodec copy -acodec copy "${i%%.mkv}.mp4"; done