0

问题:

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

  • exiftool myImage.jpg -IPTC:Keywords+=holliday -IPTC:Keywords+=海洋

图片有两个“holliday”标签

避免重复我目前使用

  • exiftool myImage.jpg -IPTC:Keywords-=holliday -IPTC:Keywords+=holliday -IPTC:Keywords-=海洋 -IPTC:Keywords+=海洋

因此,如果 jpg 中尚不存在关键字,则“-=”无效。

然而,这种方法的缺点是,即使没有必要,也总是修改 jpg,因为关键字已经存在。

是否有更有效的 axiftool-api 调用方式来添加仅在必要时才更改的关键字/主题?

背景:

目前我正在为 android 和 pc 之间的关键字/主题实现元数据同步。

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

由于 pc 关键字更改可能来自不同的 android 设备,因此必须添加/删除关键字,并且不能完全设置。

4

2 回答 2

1
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
于 2017-02-21T12:04:31.830 回答
1

关于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 ;
于 2021-01-30T12:55:30.653 回答