如何用命令行批量合并目录中成对的恢复JPEG文件?
批量合并拆分的JPEG文件(奇数编号含EXIF,偶数编号含图像数据)
问题场景
从相机存储卡恢复出3200+JPEG文件,文件被拆分:
- 奇数编号文件(如
000001.jpg):存储相机信息、EXIF数据等JPEG标记头 - 偶数编号文件(如
000002.jpg):存储实际图像像素数据
需批量将对应奇数文件的内容追加到偶数文件开头,完成1&2、3&4这类成对合并,使文件可正常打开。
解决方案
1. Mac终端(Bash)方案
在文件所在目录打开终端,执行以下脚本:
# 循环处理所有成对文件,步长为2 for ((i=1; i<=3200; i+=2)); do # 生成6位数字格式的文件名 odd_file=$(printf "%06d.jpg" $i) even_file=$(printf "%06d.jpg" $((i+1))) # 生成合并后的输出文件名,避免覆盖原文件 output_file=$(printf "merged_%06d.jpg" $((i+1))) # 二进制合并奇数文件到偶数文件开头 cat "$odd_file" "$even_file" > "$output_file" done
说明:
printf "%06d.jpg"确保文件名是6位数字格式(如000001.jpg),如果你的文件编号位数不同,修改%06d中的数字即可(比如4位用%04d)。
2. Windows批处理方案
在文件所在目录创建merge_jpegs.bat,粘贴以下内容后双击运行:
@echo off setlocal enabledelayedexpansion # 从1开始,步长2,到3200结束循环 for /L %%n in (1,2,3200) do ( # 生成6位奇数文件名 set "odd=000000%%n" set "odd=!odd:~-6!" # 计算对应偶数编号并生成6位偶数文件名 set /a even_n=%%n+1 set "even=000000!even_n!" set "even=!even:~-6!" # 二进制合并两个文件,输出为带merged前缀的新文件 copy /b "!odd!.jpg"+"!even!.jpg" "merged_!even!.jpg" ) endlocal
说明:
copy /b表示以二进制模式合并文件,确保JPEG数据不被损坏;同样可根据实际文件名位数调整000000的长度。
内容的提问来源于stack exchange,提问作者mudzilla
相关产品推荐
相关产品推荐

