Automator "copy finder object" 与 AppleScript
Automator "copy finder object" with AppleScript
我创建了一个 Apple Automator 服务
- 收到 PDF
- 加密它们
- 将加密的 PDF 复制到目标文件夹
- 重命名加密的 PDF
这些都是来自 Automator 的命令。但是,作为 Automator 命令复制只能复制到预定义的文件夹。
我想通过一个 AppleScript 来控制这部分,它会读出用户名并相应地选择一个文件夹:
on run {input, parameters}
set user_script to "echo $USER"
set username to do shell script user_script
if username = "A" then
set standardpfad to "/Users/" & username & "/whatever"
else if username = "B" then
set standardpfad to "/Users/" & username & "/foo"
else
display dialog "I don't know this user!" with title "ERROR" buttons {"OK"} default button "OK"
return
end if
#actual copying
end run
不幸的是,我不知道如何以类似于 Automator 中的“复制查找器对象”命令的方式处理输入。谁能帮帮我?
谢谢!
编辑:
自动机截图
按照您的原始脚本,它似乎想要将所有文件移动到用户的主文件夹,您可以使用自动变量完成您想要的。首先,转到 Automator window 的左上角,单击显示 'Variables' 的选项卡按钮,然后单击 'Locations' 项。寻找显示 'Home' 的项目(我相信在您的机器语言上是 'Privat'):
这提供了用户主文件夹的路径,无论哪个用户都是 运行 工作流程(独立于系统和机器)。将此变量拖到 Copy Finder Items
(Finder-objekte kopieren) 操作上,然后将其放在 'To:' ('Nach:') 下拉菜单中。它应该是这样的:
这应该可以解决问题。
有多种系统定义的用户路径可供您选择。您还可以使用特殊的 'Text' 变量(在 'Text & Data' 下)定义一个自定义文件夹,在标准 unix 符号中键入一个路径,其中波浪号 ('~') 代表用户的主文件夹:例如,~/path/to/Custom Folder/
.
如果你正在做一些更复杂的事情并且真的需要使用Run AppleScript
操作,你需要知道的是文件列表被传递到input
变量中的操作作为别名列表,无论您 return
(应该是别名列表还是 posix 路径),都将传递到下一个操作。例如:
on run {input, parameters}
set output to {}
repeat with this_item in input
set new_item to this_item -- ... obviously you'd do something other than just copy
copy new_item to end of output
end repeat
return output
end run
但你似乎不需要在这里这样做;特殊的 Automator 变量应该可以让您到达目的地。
编辑
根据评论,这里是工作流程的修订版...
将以下操作添加到问题中给出的工作流中,以代替“复制查找器对象”操作。请注意,第二个和第六个操作设置为忽略前一个操作的输入。这些操作执行以下操作:
- 将要复制的文件列表保存到名为'FileToCopy'的存储变量中;不传递任何数据
- 获取用户主文件夹的路径;传递给下一个动作
- 获取用户的'user name';将主文件夹和用户名作为列表传递给下一个操作
- 运行 从输入列表构造 unix 路径字符串的 AppleScript;将完成的路径字符串传递给下一个操作
- 将路径字符串保存到名为'DestinationFolder'的变量中;不传递任何数据
- 检索我们在步骤#1 中保存的要复制的文件列表;传递给下一个动作
- 使用我们在步骤#5 中保存的 'DestinationFolder' 变量将文件复制到选定的文件夹;将这些传递给 Rename Finder Items 操作(此处未显示)
试一试,让我知道它是如何工作的。
我创建了一个 Apple Automator 服务
- 收到 PDF
- 加密它们
- 将加密的 PDF 复制到目标文件夹
- 重命名加密的 PDF
这些都是来自 Automator 的命令。但是,作为 Automator 命令复制只能复制到预定义的文件夹。
我想通过一个 AppleScript 来控制这部分,它会读出用户名并相应地选择一个文件夹:
on run {input, parameters}
set user_script to "echo $USER"
set username to do shell script user_script
if username = "A" then
set standardpfad to "/Users/" & username & "/whatever"
else if username = "B" then
set standardpfad to "/Users/" & username & "/foo"
else
display dialog "I don't know this user!" with title "ERROR" buttons {"OK"} default button "OK"
return
end if
#actual copying
end run
不幸的是,我不知道如何以类似于 Automator 中的“复制查找器对象”命令的方式处理输入。谁能帮帮我?
谢谢!
编辑:
自动机截图
按照您的原始脚本,它似乎想要将所有文件移动到用户的主文件夹,您可以使用自动变量完成您想要的。首先,转到 Automator window 的左上角,单击显示 'Variables' 的选项卡按钮,然后单击 'Locations' 项。寻找显示 'Home' 的项目(我相信在您的机器语言上是 'Privat'):
这提供了用户主文件夹的路径,无论哪个用户都是 运行 工作流程(独立于系统和机器)。将此变量拖到 Copy Finder Items
(Finder-objekte kopieren) 操作上,然后将其放在 'To:' ('Nach:') 下拉菜单中。它应该是这样的:
这应该可以解决问题。
有多种系统定义的用户路径可供您选择。您还可以使用特殊的 'Text' 变量(在 'Text & Data' 下)定义一个自定义文件夹,在标准 unix 符号中键入一个路径,其中波浪号 ('~') 代表用户的主文件夹:例如,~/path/to/Custom Folder/
.
如果你正在做一些更复杂的事情并且真的需要使用Run AppleScript
操作,你需要知道的是文件列表被传递到input
变量中的操作作为别名列表,无论您 return
(应该是别名列表还是 posix 路径),都将传递到下一个操作。例如:
on run {input, parameters}
set output to {}
repeat with this_item in input
set new_item to this_item -- ... obviously you'd do something other than just copy
copy new_item to end of output
end repeat
return output
end run
但你似乎不需要在这里这样做;特殊的 Automator 变量应该可以让您到达目的地。
编辑
根据评论,这里是工作流程的修订版...
将以下操作添加到问题中给出的工作流中,以代替“复制查找器对象”操作。请注意,第二个和第六个操作设置为忽略前一个操作的输入。这些操作执行以下操作:
- 将要复制的文件列表保存到名为'FileToCopy'的存储变量中;不传递任何数据
- 获取用户主文件夹的路径;传递给下一个动作
- 获取用户的'user name';将主文件夹和用户名作为列表传递给下一个操作
- 运行 从输入列表构造 unix 路径字符串的 AppleScript;将完成的路径字符串传递给下一个操作
- 将路径字符串保存到名为'DestinationFolder'的变量中;不传递任何数据
- 检索我们在步骤#1 中保存的要复制的文件列表;传递给下一个动作
- 使用我们在步骤#5 中保存的 'DestinationFolder' 变量将文件复制到选定的文件夹;将这些传递给 Rename Finder Items 操作(此处未显示)
试一试,让我知道它是如何工作的。