如何在AppleScript中包含Automator变量?

时间:2016-04-05 23:14:43

标签: shell ssh applescript automator

我正在制作automator服务来选择文件,然后使用shell脚本上传所选文件。我似乎无法让我的变量工作。我对Automator和AppleScript都很陌生,对它们并不是很了解,所以它们可能只是新手的错误。

如果有更好的方法,请告诉我!

这是我的AppleScript代码:

on run {input01, input02, path}
    set input01 to "scp -i /Users/jeffArries/Desktop/jeffarries.pem -rp /Users/jeffArries/Desktop/Website_Testing_Folder/"
    set input02 to "ec2-user@ec2-54-213-219-247.us-west-2.compute.amazonaws.com:/var/www/html"
    do shell script "{input01} & {Path} & {input02}"
end run

自动取款机的屏幕截图:Apply for a higher quota

1 个答案:

答案 0 :(得分:3)

你不需要按自己的方式去做。创建Automator服务时,所选项目的路径将自动提供给服务。 您需要做的就是选择" 文件&文件夹"在顶部的菜单中(在您选择的屏幕截图中" 无输入")。

之后您不需要使用Automator变量,所有路径都可以在input参数中找到。

之后,您应该像普通字符串一样构建shell命令,并通过do shell script执行它。

试试这个开始吧,我为你填写了有用的评论:

on run {input, parameters}

    -- setting your AppleScript variables
    set input01 to "scp -i /Users/jeffArries/Desktop/jeffarries.pem -rp /Users/jeffArries/Desktop/Website_Testing_Folder/"
    set input02 to "ec2-user@ec2-54-213-219-247.us-west-2.compute.amazonaws.com:/var/www/html"

    -- loop through selected finder items
    repeat with aFinderItem in input
        -- check if the aFinderItem is a file and not anything else
        tell application "System Events" to set theItemIsAFile to ((get class of item (aFinderItem as text)) = file)
        if theItemIsAFile then
            -- store the POSIX path of the file
            set theItemsPosixPath to POSIX path of aFinderItem
            -- build the shell scp command
            set myShellCommand to input01 & " " & quoted form of theItemsPosixPath & " " & input02
            -- exceute the command
            do shell script myShellCommand
        end if
    end repeat
    return input
end run

享受,迈克尔/汉堡