如何使用exiftool批量将源图像的元数据复制到目标图像?

问题描述 投票:0回答:2

图像位于 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 将元数据从原始图像递归复制到压缩后的图像?只复制一个标签或几个选定的标签怎么样?

image tags metadata exiftool
2个回答
3
投票

您的命令是:

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 解释。


0
投票

太棒了! 但当原始文件(带有元数据)是 *.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
© www.soinside.com 2019 - 2024. All rights reserved.