图像位于 C:/photo 内的文件夹中。
我的子文件夹及其本身中有原始图像和压缩图像。
以下是图像组织方式的示例:
C:/photo/photo1.jpg
C:/photo/photo1_compressed.jpg
C:/photo/folder1/photo2.jpg
C:/photo/folder1/photo2_compressed.jpg
C:/photo/folder1/photo3.jpg
C:/photo/folder1/photo3_compressed.jpg
C:/photo/folder2/photo4.jpg
C:/photo/folder2/photo4_compressed.jpg
C:/photo/folder2/folder3/photo5.jpg
C:/photo/folder2/folder3/photo5_compressed.jpg
带有后缀
_compressed
的图像是同名但不带后缀的原始图像的压缩版本。
如何使用 exiftool 将元数据从原始图像递归复制到压缩后的图像?只复制一个标签或几个选定的标签怎么样?
您的命令是:
exiftool -if "$Filename=~/_compressed/i" -r -TagsFromFile %d%-.11f.%e -All:All C:\photo
此命令将处理
C:\photo
中的文件,检查以确保名称中包含 _compressed
,并从文件中复制所有具有相同名称的标签,并从文件基本名称末尾减去 11 个字符。
因为要递归,所以不能使用通配符仅处理压缩文件(请参阅Exiftool常见错误#2和
-r
(-recurse
)选项)。
如果您只想复制特定标签,请将
-All:All
替换为 -TAG1
-TAG2
… -TAGn
,将 TAG#
替换为实际标签名称。
此命令不会复制某些标签,例如
ICC_Profile
。您可以通过在 -ColorSpaceTags
选项后添加 -TagsFromFile
来复制颜色相关标签。
-overwrite_original
以禁止创建备份文件。如果此命令在 Unix/Mac 下运行,请反转任何双/单引号以避免 bash 解释。
太棒了! 但当原始文件(带有元数据)是 *.Png 并且目标文件是 *.jpg 时,它对我不起作用,如下所示:
C:/photo/photo1.png
C:/photo/photo1_compressed.jpg
我收到这条消息
Warning: Error opening file - S:/photo/photo1.jpg
1 directories scanned
1 files failed condition
0 image files updated
1 image files unchanged