Копирование файлов в буфер обмена с использованием AppleScript


11

Часто я нахожусь в командной строке, желая скопировать файлы в буфер обмена, чтобы я мог вставить их как вложения в Почту. Если у меня есть файл изображения image1.png, я могу сделать это с

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

Если я выполню указанную выше команду, а затем открою новое сообщение в Mail и нажму команду V, файл изображения будет вставлен как вложение. Обратите внимание, что pbcopyэто, очевидно, не является решением, поскольку это скопировало бы содержимое файла и привело бы к нежелательной загрузке при вставке с помощью команды V.

У меня вопрос, как я могу сделать то же самое с несколькими файлами? Предположим, я хочу вставить оба image1.pngи image2.png. Это тривиально из Finder (выберите их оба, команда C, затем переключитесь на Mail и команду V; вуаля, оба файла отображаются как вложения) ... но как я могу сделать это из командной строки?


1
Это такая боль в животе от AppleScript. Я бы порекомендовал выбрать один из менеджеров буфера обмена с поддержкой сценариев или использовать Cocoa NSPasteboard через ваш любимый язык сценариев. Еще одним вариантом может быть создание действия с папкой, чтобы вы могли скопировать файлы в папку, а затем с помощью Finder выбрать все элементы в папке, скопировать их в буфер обмена и очистить папку. Если вы просто хотите отправить файлы по электронной почте в виде вложений, один из вариантов - перебрать свой список и создать Почту → новое исходящее сообщение → содержимое → почтовые вложения.
Арт Тейлор

1
@ArtTaylor, спасибо за варианты. Я работаю над Applescript, который выполняет последнее, что вы упомянули, в основном то, что будет сообщать Mail make new attachment with properties {file name:this_file} at after last paragraph, используя повторение цикла argv. Мне интересно, если ответ на оригинальный вопрос, однако, действительно просто «вы не можете сделать это с помощью Applescript».
JCOidl

У меня действительно такое чувство, но я ненавижу говорить «не могу». Я думаю, что на самом деле трудность заключается в создании общего решения, поскольку Pasteboard содержит несколько версий содержимого буфера обмена, что позволяет получателю вставки выбрать подходящее представление.
Арт Тейлор

Ответы:


1

Это не совсем идеально для того, что вы хотите, но я думаю, что это может приблизить вас. Ртуть имеет инструмент командной строки. После установки вы можете передавать файлы из командной строки в приложение Quicksilver и оттуда отправлять их в виде вложений в Mail.

Чтобы установить инструмент командной строки Quicksilver, активируйте Quicksilver. Затем перейдите к Quicksilver> Настройки, чтобы открыть окно настроек. Нажмите на Настройки в правом верхнем углу окна. Слева, нажмите на инструмент командной строки и установите.

В терминале вы сможете набрать

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

Нажатие Enter отправит эти файлы на первую панель Quicksilver. Нажмите вкладку, чтобы перейти на панель действий и выбрать действие «Почта / Новое электронное письмо с вложением». Нажмите ввод, и должно появиться новое электронное письмо с выбранными вложенными файлами.

Обратите внимание, что вам также необходимо установить плагины Mail и командной строки в 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
Нет, люди, которые возражают против ответа "Почему бы просто не перетащить?" на вопрос, который спрашивает о том, как что-то с AppleScript.
Дункан Бэббидж
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.