Applescript:关于添加文件夹项目;没有循环重命名文件

时间:2018-01-17 01:00:30

标签: applescript directory finder

我创建了一个Droplet,允许我从输入框重命名文件。

on adding folder items to este_folder after receiving este_file


    display dialog "what's their name?" default answer ""

    set text_returned to text returned of the result & ".jpg"

    display dialog text_returned

    tell application "Finder"
        set the name of file este_file to text_returned
    end tell

end adding folder items to

它工作正常,但它创建了一个循环,我必须再次点击取消来停止脚本,因为它认为已经添加了一个新文件。我想重命名一次;然后没有再次弹出第二个对话框。我已经尝试将文件重新路由到另一个文件夹:

on adding folder items to este_folder after receiving este_file
    display dialog "what's their name?" default answer ""

        set text_returned to text returned of the result & ".jpg"

        display dialog text_returned

        tell application "Finder"
            set the name of file este_file to text_returned
        end tell
    repeat with anItem in este_file
            tell application "Finder"
                 set destFolder to "Macintosh HD:Users:maxwellanderson:Desktop:BetterinTexas" as alias
                move anItem to folder destFolder
            end tell
        end repeat
end adding folder items to 

但这也不起作用 - 它不处理脚本的重命名部分。关于我应该做什么来摆脱第二个对话框的任何建议?

1 个答案:

答案 0 :(得分:2)

脚本被调用两次,因为在监视文件夹中重命名文件是出于所有意图和目的 - 比如在文件夹中添加新文件。因此,实际添加文件时会调用一次;并且当它被重命名时第二次被召唤。

按照建议移动文件会有效,但您必须在重命名之前移动文件。因此,将文件移动到脚本顶部附近,然后重命名位于底部。

作为旁注,我注意到你有一个repeat with循环来处理多个文件移动,但只有一个语句处理单个文件重命名。其中一个与另一个不同。如果此监视文件夹同时收到多个文件,则很可能将它们全部重命名为相同的名称,因此可能会覆盖多个文件。如果被监视的文件夹一次只收到一个文件,那么repeat with循环是多余的。

此代码以您的方式建模,将处理单个文件的移动和重命名(但不是一组文件 - 或者更准确地说,如上所述,它会将多个文件重命名为相同的名称,从而覆盖除了列表中的最后一个之外的所有内容):

    on adding folder items to este_folder after receiving este_file

        set destFolder to POSIX file "/Users/maxwellanderson/Desktop/BetterinTexas" as alias

        set text_returned to text returned of ¬
            (display dialog "what's their name?" default answer "") ¬
                & ".jpg"

        display dialog text_returned

        tell application "Finder" to ¬
            set the name of ¬
                (move file este_file to destFolder) ¬
                    to text_returned

    end adding folder items to

如果您需要它来处理多个文件,那么您可以在set text_returned循环中将所有内容从to text_returned打包到repeat with,就像在第二个代码块中一样。这将按顺序显示对话框 - 每个文件一个 - 并相应地移动/重命名文件。

如果您有任何疑问或需要澄清,请发表评论,我会尽快回复您。