Exiftool - 将 PENTAX 相关的 EXIF 标签更改为 Pentax

Exiftool - changing PENTAX related EXIF tags to Pentax

我刚刚发现 GIMP 2.10 删除了 JPG EXIF 数据,因为 EXIF 数据中存在大写的“PENTAX”(错误描述 here and here)。

尝试了 Exif Pilot 免费软件并找出了 EXIF 字段:

品牌=宾得

型号=PENTAX K-x

将它们固定为“Pentax K-x”和“Pentax”可以解决问题,但需要我在 Exif Pilot GUI 中一一手动完成。

有什么方法可以对整个包含 JPG 文件的文件夹进行批处理吗?我试图找到一些 Exiftool 参数以将“PENTAX”替换为“Pentax”,但要正确保留模型信息但没有成功,因此我将不胜感激。

谢谢

Windows 在许多其他系统上缺少用于此常见任务的通用命令 grep。 jpeg 文件是二进制文件,但与 PDF 一样,元数据本身以纯文本形式保存。请检查您的文本字符串是否与以下类似,否则您 will/may 需要将两个 PENTAX 条目分别解析为单个单词。

所以在这个固定的情况下,应该很容易使用任何二进制文件 reader / writer 和“Find aNd Replace”文本字符串。只要确保它是一个字节一个字节,长度相同。

Find    =PENTAXPENTAX K-x
Replace =PentaxPentax K-x

请勿使用记事本,遗憾的是本机 cmd 工具 Debug.exe 很久以前就被删除了。但是,您可以使用 lit 提倡的内置 PowerShell。 :-)

您可以使用众所周知的 exiftool,但这是要添加到您的专用文件实用程序集合中的另一个 exe。

否则考虑下载一个更通用的小型 CMD 批处理文件,如 dbenhams jrepl.bat,它可用于数百种其他文件类型的任务。

jrepl PENTAXPENTAX PentaxPentax /M /f user-default-avatar.jpg /o -

所以您需要考虑的代码是如何编写一个循环 for doing 您的所有文件,因此我建议您使用 For /? 并查看添加文件夹的选项 For %F in (*.jpg) do jrepl ... 但是,由于没有错误检查或备份,我建议它是这样的

@echo off & Title Replacing PENTAX
set "Find=PENTAX"
set "Replace=Pentax"

for %%F in (*.jpg) do @(
echo replacing %find% in %%F
if not exist %%~nF.bak copy %%F /B %%~nF.bak /B >nul
@jrepl "%Find%" "%Replace%" /M /F %%F /o -
)

使用exiftool,你可以使用这个命令
exiftool -api "filter=s/PENTAX/Pentax/" -TagsFromFile @ -Model -Make /path/to/files/

-api Filter option will do a regex substitution changing PENTAX into Pentax. The -TagsFromFile option 会将修改后的 ModelMake 标签复制回文件中。它不会影响任何在这两个标签中不包含 PENTAX 的文件。

此命令创建备份文件。添加 -overwrite_original to suppress the creation of backup files. Add -r 递归到子目录。