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 会将修改后的 Model
和 Make
标签复制回文件中。它不会影响任何在这两个标签中不包含 PENTAX
的文件。
此命令创建备份文件。添加 -overwrite_original
to suppress the creation of backup files. Add -r
递归到子目录。
我刚刚发现 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 会将修改后的 Model
和 Make
标签复制回文件中。它不会影响任何在这两个标签中不包含 PENTAX
的文件。
此命令创建备份文件。添加 -overwrite_original
to suppress the creation of backup files. Add -r
递归到子目录。