使用applescript将文件复制到剪贴板


11

我经常在命令行中发现自己想要将文件复制到剪贴板,以便可以将它们作为附件粘贴到Mail中。如果我有一个图像文件,image1.png可以通过以下方式完成此操作

osascript -e 'tell app "Finder" to set the clipboard to ( POSIX file "image1.png" )'

如果我执行上述命令,然后在Mail中打开新消息并按命令V,则图像文件将作为附件粘贴。请注意,pbcopy这里显然不是解决方案,因为这会复制文件的内容并在粘贴命令V时导致垃圾邮件。

我的问题是如何对多个文件执行相同的操作?假设我要同时粘贴image1.pngimage2.png。从Finder来看这很简单(在命令C中将它们都选中,然后切换到“邮件”和命令V;瞧,两个文件都显示为附件)…但是如何从命令行执行此操作?


1
这是来自AppleScript的麻烦。我建议选择一种可编写脚本的剪贴板管理器,或者通过您喜欢的脚本语言使用Cocoa NSPasteboard。另一种选择是创建文件夹操作,因此您可以将文件复制到文件夹,然后让Finder选择文件夹中的所有项目,将它们复制到剪贴板,然后清空文件夹。如果只想通过电子邮件将文件作为附件发送,则另一种方法是遍历列表并创建邮件→新的外发邮件→内容→邮件附件。
艺术泰勒

1
@ArtTaylor,谢谢您的选择。我正在开发一个Applescript,它可以完成您提到的最后一件事,基本上是make new attachment with properties {file name:this_file} at after last paragraph使用重复循环来告诉Mail的事情argv。我想知道原始问题的答案是否确实仅仅是“ Applescript无法做到”。
JCOidl 2012年

我真的有那种感觉,但是我讨厌说“不能”。我认为困难在于创建通用解决方案,因为粘贴板包含剪贴板内容的多个版本,允许粘贴接收者选择适当的表示形式。
艺术泰勒

Answers:


1

对于您想要的东西来说,这还不是很完美,但是我认为它可以使您更加接近。Quicksilver有一个命令行工具。安装后,您可以通过命令行将文件通过管道传输到Quicksilver应用程序,然后从那里将其作为附件发送到Mail中。

要安装Quicksilver命令行工具,请激活Quicksilver。然后导航至Quicksilver>首选项以打开首选项窗口。单击窗口右上方的首选项。在左侧,单击“命令行工具”并安装。

在终端中,您可以输入

qs path/to/file1 path/to/file2 path/to/file3 path/to/file4

按Enter键会将这些文件发送到Quicksilver的第一个窗格。按Tab键移动到操作窗格,然后选择“带有附件的邮件/新电子邮件”操作。按Enter键,将出现一封新电子邮件,其中包含您选择的文件。

请注意,您还必须在Quicksilver中安装邮件和命令行插件(Quicksilver>首选项>插件)。


1

您可以执行以下操作:

set f to {(POSIX file "/path/to/a/folder/a.png"), (POSIX file "/path/to/another/folder/b.png")}
tell application "Finder"
    try -- to delete any old temp folder
        delete folder "AS_mailCopy" of (path to temporary items)
    end try
    set tmp to make new folder at (path to temporary items) with properties {name:"AS_mailCopy"}
    duplicate f to tmp
    select files of tmp
    activate
    tell application "System Events" to keystroke "c" using command down
    delete tmp
end tell

现在,您的粘贴板包含多个文件(来自各个文件夹),您可以将其粘贴到邮件中。


-5

为什么不只是拖放?有时候,技术人员变得过于复杂,而忘记了Mac可以做的简单事情。


哇。反对拖放的三个人。
Zo219'3

3
不,反对“为什么不拖放”的人?询问有关如何使用AppleScript进行操作的问题。
邓肯·巴贝奇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.