-- Date From Filename -- https://c-command.com/scripts/eaglefiler/date-from-filename -- Summary: Sets the creation dates of the selected records based on their filenames. -- Requires: EagleFiler -- Install Location: ~/Library/Scripts/Applications/EagleFiler/ -- Last Modified: 2022-03-01 use AppleScript version "2.4" use framework "Foundation" use scripting additions tell application "EagleFiler" set _records to selected records of browser window 1 repeat with _record in _records set _date to my dateFromString(my dateStringFromFilename(_record's basename)) set _record's creation date to _date end repeat end tell on dateStringFromFilename(_filename) set _regex to my (NSRegularExpression's regularExpressionWithPattern:"\\d{4}(-\\d{2}){2}" options:0 |error|:(missing value)) set _nsString to my (NSString's stringWithString:_filename) set _textCheckingResult to _regex's firstMatchInString:_nsString options:0 range:{0, _nsString's |length|()} set _dateRange to _textCheckingResult's range() set _dateString to _nsString's substringWithRange:_dateRange return _dateString as Unicode text end dateStringFromFilename on dateFromString(_string) set _sampleDate to "2015-03-12" set _dateCharacters to characters 1 thru (length of _sampleDate) of _string set AppleScript's text item delimiters to "" set _dateString to _dateCharacters as string set AppleScript's text item delimiters to "-" set {_year, _month, _day} to text items of _dateString return my makeDate(_year as integer, _month as integer, _day as integer) end dateFromString on makeDate(_year, _month, _day) set _date to current date set _date's year to _year set _date's month to _month set _date's day to _day set _date's time to 0 return _date end makeDate