使用exiftool写入文件名CreateDate或FileModifyDate,无论存在什么



使用exiftool写入文件名CreateDate或FileModifyDate,无论存在什么。

问题是什么:-如果不存在CreateDate,则会发生错误,并且文件名不会根据创建日期更改。

"Warning: No writable tags set from DSC_0680a.JPG"

我如何告诉exiftool编写CreateDate或FileModifyDate——exif信息中存在的内容?

目前,我正在使用以下命令:

for pic in DSC*.*; do exiftool "-FileName<CreateDate" -d ${pic//.*}_%Y%m%d_%H%M%S.jpg" "$pic"; done;

这也不起作用:

exiftool "-FileName<CreateDate" -d "DSC_0680a_%Y%m%d_%H%M%S.jpg" DSC_0680a.JPG  || exiftool "-FileName<FileModifyDate" -d "DSC_0680a_%Y%m%d_%H%M%S.jpg" DSC_0680a.JPG 

在循环中使用exiftool可以极大地延长处理时间,因为启动是其最大的性能打击(请参阅exiftool常见错误#3(。

您不需要两个单独的exiftool命令。您可以将两个选项放在同一个命令中,exiftool将使用最后一个有效选项(请参阅-TAG[+-^]=[VALUE]选项下的注释#1(。

你可以使用

exiftool "-FileName<FileModifyDate" "-FileName<CreateDate" -d "%%f_%Y%m%d_%H%M%S.%%e" /path/to/files/

如果CreateDate不存在,则exiftool将在FileModifyDate上回退

在这里,我删除了${pic//.*},并将其替换为exiftool的%f%e变量,它们分别代表文件名和扩展名(请参见-w(-TextOut(选项(。在日期格式字符串中使用时,文件名变量的百分号需要加倍。

需要注意的是,如果在Windows Bat文件中使用,则所有百分号都需要加倍,这将导致-d(-dateFormat(字符串为%%%%f_%%Y%%m%%d_%%H%%M%%S.%%%%e(请参阅ExifTool常见问题解答#27(。

我用linux操作员尝试了这个命令"amp&";,"这意味着无论第一个命令发生什么,也执行第二个命令";,它奏效了(?(。

  • 第一个命令更改的文件名
  • 它不会从第二命令再次改变
  • 它保留从第一个命令传递的文件名
  • 它不再存在,因为它改变了

My exiftool命令根据图像信息标记中存在的CreateDate或FileModifyDate更改/重命名文件名。

for pic in DSC*.*;        do exiftool "-FileName<CreateDate" -d  "${pic//.*}_%Y%m%d_%H%M%S.jpg" "$pic"   &&   exiftool "-FileName<FileModifyDate" -d  "${pic//.*}_%Y%m%d_%H%M%S.jpg" "$pic"   ; done;

相关内容

  • 没有找到相关文章

最新更新