我有很多以日期格式命名的照片,但EXIF日期不匹配。
例如 2016-12-16_20-20-29.jpg
EXIFTOOL我运行它们几乎可以覆盖日期,但它与确切的日期格式不匹配。
exiftool "-datetimeoriginal<filename" ./
Run Code Online (Sandbox Code Playgroud)
这会将日期设置为正确的日历日,但忽略时间。
exiftool "-datetimeoriginal<filename" -d "%Y-%M-%D_%H-%M-%S.%%e" ./
Run Code Online (Sandbox Code Playgroud)
我相信-d参数设置了一种数据格式,但是这返回为错误Warning: Error parsing time in ExifIFD:DateTimeOriginal (PrintConvInv)
这是使用正确的方法吗?
您的第一个命令应该可以正常工作。来自Exiftool常见问题5:
“ ExifTool在写入时对于输入日期/时间值的实际格式非常灵活,除非使用-n选项,否则它将尝试将任何值重新格式化为标准格式。可以使用任何分隔符(或使用实际上,完全没有。)将值中找到的前4个连续数字解释为年份,然后将2个数字解释为月份,依此类推[年份必须为4位数字。其他字段应为2位数字。 ,但如果后一个字符为非数字,则允许一个数字。]“
该段后面给出的示例与您的第一个命令几乎相同。
在-d不需要这种类型的操作选项。
输出示例
C:\>exiftool -datetimeoriginal "X:\!temp\2016-12-16_20-20-29.jpg"
C:\>exiftool "-datetimeoriginal<filename" "X:\!temp\2016-12-16_20-20-29.jpg"
1 image files updated
C:\>exiftool -datetimeoriginal "X:\!temp\2016-12-16_20-20-29.jpg"
Date/Time Original : 2016:12:16 20:20:29
Run Code Online (Sandbox Code Playgroud)
跟进StarGeek的好答案。
原来我已经破坏了我的exif数据,这就是为什么该命令未成功的原因。
要修复它,我首先清除了数据
exiftool -all= ?overwrite_original ./
Run Code Online (Sandbox Code Playgroud)
然后我可以再次运行命令以从文件名设置日期。另外一个好处是,我发现了该属性-alldates会更新元数据中每个日期(不包括文件写入/修改日期)的每个日期。
exiftool "-alldates<filename" ?overwrite_original ./
Run Code Online (Sandbox Code Playgroud)
.nb ?overwrite_original阻止创建备份文件
| 归档时间: |
|
| 查看次数: |
9382 次 |
| 最近记录: |