我对 AppleScript 还很陌生。我经常将本地计算机中的文件共享到 Dropbox 文件夹。
例如:
From: ~/Work/hello.txt
To: ~/Dropbox/zzz_ShareMe/hello.txt
cp ~/Work/hello.txt ~/Dropbox/zzz_ShareMe/ # or, just copy files from finder
我在 Google 上搜索了有关 AppleScript 的信息,并想出了一个只复制一个项目的工作流程,但是我们如何选择多个文件并使用指定的热键(ctrl-alt-d)将它们复制到 Dropbox?
的内容运行 NSAppleScript如下所示:
# Note: we should have ~/Dropbox/zzz_ShareMe folder
#
on alfred_script(q)
tell application "Finder"
set source to (POSIX path of (the selection as alias))
do shell script "cp -r" & space & quoted form of POSIX path of source & space & "~/Dropbox/zzz_ShareMe"
end tell
end alfred_script
我已经分享了我的初步工作流程在这里。
此工作流程适用于单个文件。如果我在 Finder 中选择一个文件,ctrl-alt-d 将文件复制到~/Dropbox/zzz_ShareMe/
,但是,如果我选择了多个文件并使用该热键没有任何内容被复制。
我们怎样才能解决这个问题?
非常感谢您的帮助。
相关链接:
http://www.packal.org/workflow/move
http://www.packal.org/workflow/copymove
https://www.alfredforum.com/topic/4195-move-selected-finder-item/
更新 我尝试了另一个脚本,但仍然失败。
必做任務:
- 在 Finder 中选择多个文件
- Ctrl-Alt-D
- 它应该将所有文件复制到
~/Dropbox/zzz_ShareMe/
。
新的脚本如下:
on alfred_script(q)
tell application "Finder"
set source to selection
end tell
if (count of source) is greater than 1 then
set fileList to every item of source
repeat with source in fileList
doMove(source, q)
end repeat
else
doMove(source, q)
end if
end alfred_script
on doMove(source, destination)
set source to (POSIX path of (the source as alias))
set destination to "~/Dropbox/zzz_ShareMe"
do shell script "cp -r" & space & quoted form of POSIX path of source & space & POSIX path of destination
end doMove
答案1
理想情况下,你应该把这个问题发布到阿尔弗雷德论坛。不过,您的问题很简单,所以我很乐意为您提供帮助。
本质上,用于单文件工作流程的 AppleScript 本质上会自我限制为处理单个文件,因为变量source
被强制转换为alias
,这是一种一元数据类型(单个值)。有一个名为 的类alias list
,顾名思义,它适用于别名列表。
您还将 AppleScript 与 Bash 脚本混合使用,这在其他情况下非常有用,但在这里有点奇怪,因为没有理由这样做。所以,我将为您提供单独的 AppleScript 和 Bash 解决方案。
工作流程
创建一个工作流程,以妥协以下内容热键触发连接到运行脚本(不是 运行 NSAppleScript)行动(见Alfred 帮助页面有关这两个操作的更多信息,但一般来说,你永远不需要使用运行 NSAppleScript行动):
双击热键触发对其进行配置。在第一个选项卡 (热键设置),我假设您知道如何设置所需的热键。但是,还要设置争论字段在 macOS 中选择。
在第二个选项卡中(相关应用程序),您可以限制热键的操作,使其仅在发现者已获得焦点。拖动发现者应用程序图标放入列表框来执行此操作(最简单的方法是触发阿尔弗雷德在搜索字段中输入“发现者”,然后将图标从这里拖到那里)。
保存设置。
剧本
双击运行脚本操作以调出编辑器窗格。您可以在第一个下拉列表中选择所需的语言:对于这个问题,我们感兴趣的两种语言是/bin/bash
(或等效列表条目)和/usr/bin/osascript (AS)
(或同等学历)。
osascript
是编译和执行AppleScript的引擎。
AS
指的是AppleScript;JS
指的是JavaScript。
猛击
如果您选择使用 Bash,请选择输入为 argv。删除编辑字段中出现的任何示例代码,然后输入此代码:
cp "$@" ~/Dropbox/zzz_ShareMe
苹果脚本
如果您选择 AppleScript,则输入类型在这里无关紧要。删除编辑字段中出现的任何示例代码,然后输入以下代码:
tell application "Finder" to reveal ¬
(duplicate (selection as alias list) ¬
to folder "zzz_ShareMe" ¬
of folder "Dropbox" ¬
of home)