exiftool 在使用 add += 时防止重复 iptc:keywords/xmp-dc:subject

exiftool prevent duplicate iptc:keywords/xmp-dc:subject when using add +=

问题:

当我有一个带有 iptc:keywords=holliday 的 jpg 并且我执行

图像有两个 "holliday" 标签

为了避免重复,我目前使用

所以如果关键字不存在于jpg中,“-=”无效。

但是这种方法的缺点是 jpg 总是被修改,即使不需要修改,因为关键字已经存在。

是否有更有效的 axiftool-api 调用方式来添加一个 keyword/subject 仅在需要时才更改?

背景:

目前我正在 android 和 pc 之间实现 keywords/subjects 的元数据同步。

android 为所做的每个更改生成一个 msdos 批处理脚本条目,我使用基于 exiftool 的 bat 在 pc 端应用元数据更改的脚本

因为 pc 关键字更改可能来自不同的 android 设备关键字必须 added/removed 并且不能完全设置。

exiftool.exe myImage.jpg -if "not $keywords =~ \"holliday\""  -IPTC:Keywords+=holliday

如果关键字不存在,请添加。

已编辑以适应评论

exiftool.exe ^
    -if "not $keywords =~ \"holliday\""  -IPTC:Keywords+=holliday ^
    -execute ^
    -if "not $keywords =~ \"ocean\""  -IPTC:Keywords+=ocean ^
    -common_args myImage.jpg

关于Linux的一些研究bash:

exiftool -if 'not $keywords =~ /holiday/' -Keywords+=holiday myImage.jpg ;
exiftool -if 'not $keywords =~ /ocean/' -Keywords+=ocean myImage.jpg ;

双引号在这里不起作用,所以这是一种处理单引号的方法:

exiftool -if 'not $Keywords =~ /harry'\''s/' -Keywords+='harry'\''s' myImage.jpg ;

如果您的正则表达式必须不区分大小写:

exiftool -if 'not $Keywords =~ /joe/i' -Keywords+='Joe' myImage.jpg ;