我有很多以日期格式命名的照片,但EXIF日期不匹配。
e.g。 2016-12-16_20-20-29.jpg
通过EXIFTOOL
运行它我几乎可以覆盖日期,但它与确切的日期格式不匹配。
exiftool "-datetimeoriginal<filename" ./
这会将日期设置为正确的日历日但忽略时间。
exiftool "-datetimeoriginal<filename" -d "%Y-%M-%D_%H-%M-%S.%%e" ./
我相信-d
参数设置数据格式,但这会返回Warning: Error parsing time in ExifIFD:DateTimeOriginal (PrintConvInv)
的错误
这是正确的使用方法吗?
答案 0 :(得分:5)
您的第一个命令应该可以正常工作。来自Exiftool FAQ 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
答案 1 :(得分:4)
跟进StarGeek的好答案。
事实证明我已经损坏了我的exif数据,这就是为什么命令没有成功。
为了解决这个问题,我首先清除了数据
exiftool -all= −overwrite_original ./
然后我能够再次运行命令来设置文件名中的日期。另外一个好处是,我发现属性-alldates
更新了元数据中的每个日期,不包括文件写入/模式日期。
exiftool "-alldates<filename" −overwrite_original ./
.n.b −overwrite_original
会阻止创建备份文件