我想在applescript droplet中设置一次变量,但它让我为每个文件设置它

时间:2015-01-02 20:08:53

标签: applescript

我写了一个AppleScript droplet,我想:

  1. 将一个或多个图像拖到Droplet上
  2. 出现3个显示对话框,询问'width','height','format'
  3. 使用上面返回的文本处理所有丢弃的图像 3显示对话框
  4. 目前,每个图像都会显示3个显示对话框(例如,3个图像= 9个对话框出现)。有没有办法我只能回答一次这些对话框?这是我的剧本:

    on run
        display dialog "This is a droplet"
    end run
    
    on open draggedItems
    
    set tid to AppleScript's text item delimiters
    
    --ask for new width
    set newWidth to text returned of (display dialog "New Width" default answer ¬
        "45" buttons {"Continue…", "Cancel"} ¬
        default button 1)
    
    --ask for new height
    set newHeight to text returned of (display dialog "New Height" default answer ¬
        "45" buttons {"Continue…", "Cancel"} ¬
        default button 1)
    
    --ask for formatType
    set newFormat to text returned of (display dialog "Image Format" default answer ¬
        "jpg" buttons {"Continue…", "Cancel"} ¬
        default button 1)
    --repeat
    repeat with i in draggedItems
        set theFile to (i as alias)
        set theFilePath to (the POSIX path of theFile)
        set fullFileName to name of (info for theFile without size)
        set AppleScript's text item delimiters to "."
        set fileNameNoExtension to first text item of fullFileName
        --set fileExtension to second text item of fullFileName
        set AppleScript's text item delimiters to tid
    
        do shell script ("/usr/local/bin/convert " & quoted form of theFilePath & " -resize " & newWidth & "x" & newHeight & "\\! ~/desktop/" & fileNameNoExtension & "." & newFormat)
    end repeat
    end open
    

1 个答案:

答案 0 :(得分:0)

on open draggedItems已经是一个重复循环,如果您在此Droplet上删除4个文件

on open draggedItems
    display dialog (draggedItems as text)
end open

您将获得4个不同的对话框。

你可以做这样的事情

property askingForNew : true

on open draggedItems
    if askingForNew is true then
        --display dialogs
        set askingForNew to false
    end if
    display dialog (draggedItems as text)
end open

或拖动Droplet上的文件夹并浏览它的文件(like this)。