You need to enable JavaScript to run this app. Shell批量视频编码脚本重命名:保留basename加modified并改mkv为mp4
优惠活动
大模型
产品
解决方案
定价
更多

Shell批量视频编码脚本重命名:保留basename加modified并改mkv为mp4

问题原因梳理
  • 原代码存在两处逻辑缺陷:
    • 错误引用了未定义的变量i,${i#*.}写法本身无实际生效逻辑,且设计目标和需求不匹配
    • 需求明确要求将输出文件扩展名固定为.mp4,无需沿用输入文件的原扩展名,因此不需要通过参数展开动态截取原文件扩展名
  • 原代码中${file%%.*}的逻辑是正确的:该参数展开会提取文件名开头到第一个.之前的内容,即去掉原扩展名后的基础文件名,例如my_file.mkv经过该操作会得到my_file,符合保留原文件基础名的要求。
调整后的可直接运行代码
# 所有变量引用加双引号,避免文件名包含空格时执行异常
for file in *.mkv; do
  encode "$file" "${file%%.*}_modified.mp4"
done
实际运行效果

对于输入文件my_file.mkv,处理后会生成输出文件名my_file_modified.mp4,完全匹配预期命名规则。
如果遇到无扩展名的输入文件(例如my_video),代码会自动生成my_video_modified.mp4的输出名,逻辑依然自洽。

补充说明:如果未来需要灵活调整输出扩展名,只需要替换代码中写死的.mp4后缀即可,不需要修改前面的基础名截取逻辑。

内容的提问来源于stack exchange,提问作者Maxwell's Daemon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 15:15:05