获取 Applescript 中 Finder 项目的添加日期

Get date added of Finder items in Applescript

我可以使用这段代码按修改日期获取文件:

        get (files of entire contents of folder "Macintosh HD:General Music:05 Reggae:" whose modification date is less than ((current date)) - modDate * days)

但我似乎无法添加他们的日期(我也没有在 Finder 的 Applescript 字典中看到它)。这很奇怪,因为我可以做一个使用这个 属性.

的智能文件夹

知道如何获取在 15 天内添加的文件吗?否则我现在正在用 GUI 做很多奇怪的事情,我想进一步自动化它。

谢谢

迟到

您可以使用 mdfind 命令搜索 Spotlight 的元数据,使用 kMDItemDateAdded 键:

set _15daysAgo to -15 * days -- number of seconds
set tFolder to quoted form of POSIX path of "Macintosh HD:General Music:05 Reggae:"
-- find files, not folders
do shell script "mdfind -onlyin " & tFolder & " 'kMDItemDateAdded>$time.now(" & _15daysAgo & ") && ! kMDItemContentType == public.folder'"
set tFiles to paragraphs of the result
repeat with i in tFiles
    tell i to set contents to i as POSIX file as alias
end repeat
tFiles -- list of files who were added within 15 days

或者,使用NSFileManagerClass的方法获取NSURLAddedToDirectoryDateKey的文件(需要YosemiteEl Capitan),

这是 AppleScript:

set _15daysAgo to -15 * days -- number of seconds
set f to POSIX path of "Macintosh HD:General Music:05 Reggae:"

do shell script "/usr/bin/python -c 'import sys; from Foundation import NSFileManager, NSURL, NSDate, NSDirectoryEnumerationSkipsHiddenFiles
def procFolder(tDir):
    p = dfM.contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_(tDir, myKeys, NSDirectoryEnumerationSkipsHiddenFiles, None)[0]
    for f in p:
        myDict, error=f.resourceValuesForKeys_error_(myKeys, None)
        if error is None:
            if (myDict.get(\"NSURLIsDirectoryKey\")): procFolder(f)
            elif (myDict.get(\"NSURLAddedToDirectoryDateKey\").compare_(d) == 1):
                print f.path().encode(\"utf8\")

fold=NSURL.fileURLWithPath_isDirectory_(sys.argv[1].decode(\"utf8\"), True)
dfM=NSFileManager.defaultManager()
d=NSDate.dateWithTimeIntervalSinceNow_(" & _15daysAgo & ")
myKeys=[\"NSURLIsDirectoryKey\", \"NSURLAddedToDirectoryDateKey\"]
procFolder(fold)' " & f

set tFiles to paragraphs of the result
repeat with i in tFiles
    tell i to set contents to i as POSIX file as alias
end repeat
tFiles -- list of  files who were added within 15 days