使用Applescript根据文件名中包含的日期设置文件创建日期

时间:2016-02-20 14:26:37

标签: applescript metadata filenames photos

我希望一些聪明的家伙可以帮助我。我在几个文件夹中有1000张照片,这些照片的创建日期错误(我的硬盘失败,当我恢复它们时,它们都将恢复日期设置为创建日期)。大多数文件的格式为'(YYYY-MM-DD HH-MM-SS)格式的文件名。'使用其他文本,其中...是,文件名包含()

我正在尝试编写一个Applescript来根据文件名更改创建日期。这样就可以在Apple Photos中正确组织照片。我多年没有编程(我当天很糟糕)而且很挣扎,但需要写一些话要说:

如果文件名包含(YYYY-MM-DD HH-MM-SS) 将创建的文件日期设置为(YYYY-MM-DD HH-MM-SS)

并为整个照片文件夹执行此操作。

非常感谢你的帮助。这是我妻子的生活照片,你可以真正帮助我的婚姻:)

2 个答案:

答案 0 :(得分:0)

最简单的方法是安装Exiftool。我已经使用了这个实用程序多年了,虽然它是一个命令行工具,但它很容易通过AppleScript的做shell脚本命令来使用。

我已经有几十个脚本已经使用它了,所以如果你有任何困难,请回到这里。

答案 1 :(得分:0)

在Exiftool之前(感谢Craig),你必须提取并转换'yyy-mm-dd HH-MM-SS'到exiftool日期/时间格式,这是yyyy:mm:dd HH:MM:SS

下面的代码使用Applescript文本项分隔符来解析和重新格式化。您可能必须添加测试以确保这是有效的日期/时间。

set FileName to "(2016-01-16 15-53-37)my photo 001.jpg" -- just an example

set AppleScript's text item delimiters to {"(", ")"}
set TempDate to text item 2 of FileName
set AppleScript's text item delimiters to {"-"}
set NList to text items of TempDate
set AppleScript's text item delimiters to {":"}
set NewDateTime to NList as string -- format yyy:mm:dd HH:MM:SS

对于Exiftool,语法应为:

   do shell script "/usr/local/bin/exiftool -CreateDate='" & NewDateTime & "' -DateTimeOriginal='" & NewDateTime & "' -Overwrite_Original " & quoted form of (POSIX path of your_file)

安装后,查看Exiftool的“man”页面。它还允许您直接在照片和许多其他属性中设置关键字)。结果是,当您将照片复制到其他地方时,它们将保留此类属性(与iPhoto和照片中设置的属性不同)。

相关问题