Menyalin file ke clipboard menggunakan applescript


11

Seringkali saya menemukan diri saya pada baris perintah ingin menyalin file ke clipboard, sehingga saya bisa menempelkannya sebagai lampiran di Mail. Jika saya memiliki file gambar image1.png,, saya dapat melakukannya dengan

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

Jika saya menjalankan perintah di atas dan kemudian membuka pesan baru di Mail dan tekan perintah V, file gambar disisipkan sebagai lampiran. Catatan yang pbcopytampaknya bukan solusi di sini, karena ini akan menyalin isi file dan menghasilkan sampah ketika disisipkan dengan perintah V.

Pertanyaan saya adalah bagaimana saya bisa melakukan hal yang sama dengan banyak file? Misalkan saya ingin menempelkan keduanya image1.pngdan image2.png. Ini sepele dari Finder (pilih keduanya, perintah C, kemudian beralih ke Mail dan perintah V; voila, kedua file muncul sebagai lampiran) ... tetapi bagaimana saya bisa melakukan ini dari baris perintah?


1
Ini seperti rasa sakit pada tuckus dari AppleScript. Saya akan merekomendasikan memilih salah satu pengelola papan klip yang dapat skrip atau menggunakan Cocoa NSPasteboard melalui bahasa skrip favorit Anda. Satu opsi lain mungkin untuk membuat aksi folder, sehingga Anda dapat menyalin file ke folder, lalu minta Finder memilih semua item di folder, menyalinnya ke clipboard, dan mengosongkan folder. Jika Anda hanya ingin mengirim file melalui email sebagai lampiran, salah satu alternatif adalah beralih melalui daftar Anda dan membuat Email → pesan keluar baru → konten → lampiran email.
Seni Taylor

1
@ ArtTaylor, terima kasih atas opsinya. Saya sedang mengerjakan Applescript yang melakukan hal terakhir yang Anda sebutkan, pada dasarnya sesuatu yang akan memberi tahu Mail make new attachment with properties {file name:this_file} at after last paragraph, menggunakan pengulangan berulang argv. Saya bertanya-tanya apakah jawaban untuk pertanyaan awal, bagaimanapun, memang hanya "Anda tidak bisa melakukan ini dengan Applescript".
JCOidl

Saya benar-benar memiliki perasaan itu, tetapi saya benci mengatakan "tidak bisa". Saya pikir kesulitannya adalah dalam menciptakan solusi umum karena Pasteboard berisi beberapa versi konten clipboard, memungkinkan penerima tempel untuk memilih representasi yang sesuai.
Seni Taylor

Jawaban:


1

Ini tidak cukup sempurna untuk apa yang Anda inginkan, tetapi saya pikir itu mungkin membuat Anda lebih dekat. Quicksilver memiliki alat baris perintah. Ketika diinstal, Anda dapat mem-pipe file dari baris perintah ke aplikasi Quicksilver, dan dari sana mengirimnya sebagai lampiran di Mail.

Untuk menginstal alat baris perintah Quicksilver, aktifkan Quicksilver. Kemudian navigasikan ke Quicksilver> Preferences untuk membuka jendela preferensi. Klik Preferensi di kanan atas jendela. Di sebelah kiri, klik pada Alat Baris Perintah dan instal.

Di Terminal, Anda dapat mengetik

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

Menekan enter akan mengirim file-file itu ke panel pertama Quicksilver. Tekan tab untuk pindah ke panel tindakan dan pilih tindakan Mail / Email Baru Dengan Lampiran. Tekan enter, dan email baru dengan file yang Anda pilih terlampir akan muncul.

Perhatikan bahwa Anda juga harus menginstal plugin Mail and Command Line di Quicksilver (Quicksilver> Preferences> Plug Ins).


1

Anda dapat melakukan sesuatu seperti:

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

Sekarang papan tulis Anda berisi banyak file (dari berbagai folder) yang dapat Anda tempelkan ke email Anda.


-5

Mengapa tidak seret dan jatuhkan saja? Terkadang teknisi terlalu rumit dan melupakan hal-hal sederhana yang dapat dilakukan Mac.


Wow. Tiga orang yang keberatan seret dan jatuhkan.
Zo219

3
Tidak, orang yang keberatan dengan jawaban "Kenapa tidak seret dan jatuhkan saja?" untuk pertanyaan yang menanyakan tentang bagaimana melakukan sesuatu dengan AppleScript.
Duncan Babbage
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.