Я пытаюсь переместить кучу файлов в папки на основе даты создания файла. Используя приведенный ниже сценарий, скорость перемещения составляет около 1 файла в секунду. 64000 файлов. Script тайм-аут, когда я попыталсяAppleScript мертв медленно в перемещении файлов в папку
set myFiles to items of myFolder whose name ends with "jpg"
repeat with aFile in myFiles
Так что теперь я обрабатываю файл файл и только проверка папки существующей, когда сравнение даты не удалось ускорил процесс лишь незначительно. Я пробовал очевидное
set myDayBuddies to items of myFolder whose creation date is theFileDate
но это тоже не очень помогло. Я подозреваю, что Finder снова и снова считывает содержимое папки, создавая огромные накладные расходы.
Каков правильный способ ускорения этого? На PHP я знаю, что могу читать записи из потока каталога, один за другим.
Сценарий:
tell application "Finder"
set myFolder to choose folder
set prevDateString to ""
repeat while true
try
set aFile to first item of myFolder whose name ends with "jpg"
set theFileDate to (the creation date of aFile)
set theDateString to my composedate(theFileDate)
if (theDateString is not prevDateString) then
if not (exists folder ((myFolder & theDateString) as text)) then
make new folder at myFolder with properties {name:theDateString}
end if
set prevDateString to theDateString
set destPath to (((myFolder as text) & theDateString) as alias)
end if
move aFile to destPath
on error
return
end try
end repeat
end tell
on composedate(aDate)
set y to (year of aDate as integer) as string
set m to (month of aDate as integer) as string
set d to (day of aDate as integer) as string
if length of m < 2 then
set m to "0" & m
end if
if length of d < 2 then
set d to "0" & d
end if
set myDateString to y & m & d
return myDateString
end composedate
изучение нового языка или дайвинг в Терминале только немного слишком много для ускорения его 8-) Я бы скорее хотел бы узнать, как уменьшить накладные расходы в Applescript/Finder в текущей ситуации. Одна вещь, в то время как скрипт хруст прочь, заключается в том, что я привязал действие папки к папке с похожим скриптом, так что новые файлы убираются немедленно и не складываются. – user1789266
Спасибо Matt, «текущая ситуация» такая же, как в «Applescript», а не как «с 60 000 файлов слева». Ваше замечание о неэффективной обработке даты привело к тестированию текста (файлы имеют дату в имени файла). Действия с файлами будут очищать новые файлы с этого момента, хруст на других 60 000 файлах займет, ну, некоторое время. У меня были надежды где-то скрытые, в Applescript будет опция «читать файл по файлу из ресурса», как и в PHP. – user1789266