我想使用以下命令将一堆 mkvs 转换为 mp4s:
for i in $(ls *mkv); do ffmpeg -i $i -vcodec copy -acodec copy $i.mp4; done;
Run Code Online (Sandbox Code Playgroud)
但是,文件名中包含空格和连字符,因此该命令无法正常工作。(当我手动替换The File - 01.mkv用The\ File\ \-\ 01.mkv,相同的命令作品)。
让它发挥作用的最佳方法是什么?
您需要引用变量并避免命令替换:
for i in ./*.mkv; do ffmpeg -i "${i}" -vcodec copy -acodec copy "${i}.mp4"; done
Run Code Online (Sandbox Code Playgroud)
请参阅何时需要双引号?有关引用的详细说明。
当我在做的时候,上面会生成带有.mkv.mp4扩展名的文件;解决这个问题:
for i in ./*.mkv; do ffmpeg -i "${i}" -vcodec copy -acodec copy "${i%%.mkv}.mp4"; done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |