Alfred Workflow 将多个文件移动到 Dropbox 文件夹

Alfred Workflow 将多个文件移动到 Dropbox 文件夹

我对 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/

更新 我尝试了另一个脚本,但仍然失败。

必做任務:

  1. 在 Finder 中选择多个文件
  2. Ctrl-Alt-D
  3. 它应该将所有文件复制到~/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行动):

Alfred 工作流

双击热键触发对其进行配置。在第一个选项卡 (热键设置),我假设您知道如何设置所需的热键。但是,还要设置争论字段在 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)

相关内容