0

我正在尝试制作一个脚本,它将文件夹中的每第四个项目移动到目标文件夹。到目前为止,我有:

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

为什么这不起作用,什么会起作用?

4

1 回答 1

3

您的脚本中有几个问题:

在设置choose folder变量时,您必须将括号括起来choose folder以强制 Finder 将返回的别名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
于 2010-08-01T07:44:04.307 回答