Копіювання файлів у буфер обміну за допомогою applescript


11

Часто я опиняюся в командному рядку, бажаючи скопіювати файли у буфер обміну, щоб я міг вставити їх як вкладення в пошті. Якщо у мене є файл із зображеннями image1.png, я можу це зробити за допомогою

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

Якщо я виконаю вищезгадану команду, а потім відкрию нове повідомлення в Пошті та натисніть команду V, файл зображення вставляється як додаток. Зауважте, що pbcopyце, мабуть, не є рішенням, оскільки це скопіювало б вміст файлу і призвело до небажаного під час вставки з командою V.

Моє запитання - як я можу зробити те ж саме з кількома файлами? Припустимо, я хочу вставити і те, image1.pngі image2.png. Це тривіально у Finder (виберіть їх обидва, команду C, потім перейдіть на пошту та команду V; voila, обидва файли відображаються як вкладення)… але як це зробити з командного рядка?


1
Це ТАКІ болі в tuckus від AppleScript. Я рекомендую вибрати одного з менеджерів буфера обміну сценарієм або використовувати Cocoa NSPasteboard через вашу улюблену мову сценаріїв. Ще одним варіантом може бути створення дії з папкою, тому ви можете скопіювати файли в папку, а потім Finder вибрати всі елементи в папці, скопіювати їх у буфер обміну та видалити папку. Якщо ви просто хочете відправити файли електронною поштою у вигляді вкладених файлів, однією з альтернатив є перегляд списку та створення пошти → нового вихідного повідомлення → вмісту → вкладення пошти.
Art Taylor

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

У мене справді є таке почуття, але я ненавиджу говорити "не можу". Я думаю, що складність справді полягає у створенні загального рішення, оскільки Pasteboard містить кілька версій вмісту буфера обміну, що дозволяє одержувачу пасти вибрати відповідне представлення.
Art Taylor

Відповіді:


1

Це не зовсім ідеально для того, що ви хочете, але я думаю, що це може вас зблизити. У Quicksilver є інструмент командного рядка. Після встановлення ви можете передавати файли з командного рядка в додаток Quicksilver, а звідти надсилати їх як додатки в пошті.

Щоб встановити інструмент командного рядка Quicksilver, активуйте Quicksilver. Потім перейдіть до Quicksilver> Preferences, щоб відкрити вікно налаштувань. Натисніть Налаштування вгорі праворуч від вікна. Зліва натисніть на інструмент командного рядка та встановіть.

У Терміналі ви зможете вводити текст

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

Якщо натиснути клавішу Enter, вони відправлять ці файли на першу панель Quicksilver. Натисніть вкладку, щоб перейти до області дій та виберіть дію "Пошта / Нова електронна пошта зі вкладенням". Натисніть клавішу Enter, і має з’явитися нова електронна пошта із вибраними файлами.

Зауважте, що вам також доведеться встановити плагіни пошти та командного рядка в Quicksilver (Quicksilver> Налаштування> Plug Ins).


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.