如何在 AppleScript 中包含 Automator 变量?
How to include Automator variables in AppleScript?
我正在为 select 文件制作自动化服务,然后使用 shell 脚本上传 selected 文件。我似乎无法让我的变量工作。我对 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
以及automator的截图:
你不需要按照你的方式去做。创建 Automator 服务时,selected 项的路径会自动提供给该服务。
您需要做的就是在顶部的菜单中 select“文件和文件夹”(在您的屏幕截图中,您 select 编辑了“没有输入").
之后你就不需要使用 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
享受吧,迈克尔/汉堡
我正在为 select 文件制作自动化服务,然后使用 shell 脚本上传 selected 文件。我似乎无法让我的变量工作。我对 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
以及automator的截图:
你不需要按照你的方式去做。创建 Automator 服务时,selected 项的路径会自动提供给该服务。 您需要做的就是在顶部的菜单中 select“文件和文件夹”(在您的屏幕截图中,您 select 编辑了“没有输入").
之后你就不需要使用 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
享受吧,迈克尔/汉堡