Как мне переместить каждый четвертый элемент в папке? - PullRequest
0 голосов
/ 01 августа 2010

Я пытаюсь создать сценарий, который будет перемещать каждый четвертый элемент в папке в папку назначения.Пока у меня есть:

tell application "Finder"
    set originFolder to folder choose folder
    set dest1Folder to folder choose folder
    set dest2Folder to folder choose folder
    set quarter to 1
    repeat with i from 1 to count of items in originFolder
        if quarter is 1 then
            move item i of originFolder to dest1Folder
        else
            move item i of originFolder to dest2Folder

        end if
        if quarter is 4 then
            set quarter to 0
        end if
        set quarter to quarter + 1
    end repeat
end tell

но это дает мне

error "Finder got an error: Expected a reference." number -1727

Почему это не работает и что будет работать?

1 Ответ

3 голосов
/ 01 августа 2010

В вашем скрипте есть несколько проблем:

При настройке переменных choose folder необходимо заключить скобки в choose folder, чтобы заставить Finder преобразовать псевдоним 1006 * возвращается choose folder в спецификаторе объекта :

set originFolder to folder (choose folder)

Цикл, который перемещает элементы, завершится с ошибкой индекса вне границ, поскольку количество элементов в originFolder изменяется при каждой итерации цикла при перемещении элементов.

Лучшее решение - сначала вычислить индексы файлов, которые должны быть перемещены, а затем Finder выполнит операцию перемещения за один шаг.:

tell application "Finder"
    set originFolder to folder (choose folder)
    set destFolder to folder (choose folder)
    set indexes to {}
    repeat with i from 4 to (count of items in originFolder) by 4
        copy i to end of indexes
    end repeat
    move (every item of originFolder whose index is in indexes) to destFolder
end tell
...