在Applescript

时间:2016-06-26 09:40:11

标签: applescript itunes

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

        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做很多奇怪的事情,我想进一步自动化。

由于

塔迪

1 个答案:

答案 0 :(得分:1)

您可以使用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

或者,使用NSFileManager类的方法获取文件的NSURLAddedToDirectoryDateKey(需要 Yosemite El Capitan ),< / p>

这是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