Sao chép tập tin vào clipboard bằng applescript


11

Thường thì tôi thấy mình ở dòng lệnh muốn sao chép tệp vào bảng tạm, để tôi có thể dán chúng dưới dạng tệp đính kèm trong Mail. Nếu tôi có một tệp hình ảnh image1.png, tôi có thể thực hiện điều này với

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

Nếu tôi thực hiện lệnh trên và sau đó mở một tin nhắn mới trong Mail và nhấn lệnh V, tệp hình ảnh sẽ được dán dưới dạng tệp đính kèm. Lưu ý rằng pbcopyrõ ràng không phải là một giải pháp ở đây, bởi vì điều này sẽ sao chép nội dung của tệp và dẫn đến rác khi được dán bằng lệnh V.

Câu hỏi của tôi là làm thế nào tôi có thể làm điều tương tự với nhiều tập tin? Giả sử tôi muốn dán cả hai image1.pngimage2.png. Đây là tầm thường từ Finder (chọn cả hai, lệnh C, sau đó chuyển sang Mail và lệnh V; voila, cả hai tệp hiển thị dưới dạng tệp đính kèm), nhưng làm thế nào tôi có thể làm điều này từ dòng lệnh?


1
Đây là một nỗi đau trong tuckus từ AppleScript. Tôi sẽ khuyên bạn nên chọn một trong những trình quản lý clipboard có thể tạo tập lệnh hoặc sử dụng CSPasteboard thông qua ngôn ngữ kịch bản yêu thích của bạn. Một tùy chọn khác có thể là tạo hành động thư mục, do đó bạn có thể sao chép tệp vào thư mục, sau đó để Finder chọn tất cả các mục trong thư mục, sao chép chúng vào bảng tạm và làm trống thư mục. Nếu bạn chỉ muốn gửi email các tệp dưới dạng tệp đính kèm, một cách khác là lặp qua danh sách của bạn và tạo Thư → thư gửi mới → nội dung → tệp đính kèm.
Nghệ thuật Taylor

1
@ArtTaylor, cảm ơn bạn đã lựa chọn. Tôi đang làm việc trên một Applescript làm điều cuối cùng mà bạn đã đề cập, về cơ bản là thứ sẽ cho Mail biết make new attachment with properties {file name:this_file} at after last paragraph, sử dụng vòng lặp lặp lại argv. Tuy nhiên, tôi tự hỏi liệu câu trả lời cho câu hỏi ban đầu có thực sự đơn giản là "bạn không thể làm điều này với Applescript".
JCOidl

Tôi thực sự có cảm giác đó, nhưng tôi ghét phải nói "không thể". Tôi nghĩ rằng khó khăn thực sự là tạo ra một giải pháp chung vì Pasteboard chứa một số phiên bản của nội dung clipboard, cho phép người nhận dán chọn một đại diện thích hợp.
Nghệ thuật Taylor

Câu trả lời:


1

Điều này không hoàn hảo cho những gì bạn muốn, nhưng tôi nghĩ nó có thể giúp bạn tiến gần hơn. Quicksilver có một công cụ dòng lệnh. Khi được cài đặt, bạn có thể chuyển các tệp từ dòng lệnh sang ứng dụng Quicksilver và từ đó gửi chúng dưới dạng tệp đính kèm trong Mail.

Để cài đặt công cụ dòng lệnh Quicksilver, kích hoạt Quicksilver. Sau đó điều hướng đến Quicksilver> Preferences để mở cửa sổ tùy chọn. Nhấp vào Tùy chọn ở trên cùng bên phải của cửa sổ. Ở bên trái, nhấp vào Công cụ dòng lệnh và cài đặt.

Trong Terminal, bạn sẽ có thể nhập

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

Nhấn enter sẽ gửi các tệp đó đến khung đầu tiên của Quicksilver. Nhấn tab để di chuyển đến ngăn hành động và chọn hành động Mail / Email mới có tệp đính kèm. Nhấn enter và một email mới với các tệp đã chọn của bạn được đính kèm sẽ xuất hiện.

Lưu ý rằng bạn cũng sẽ phải cài đặt các plugin Thư và Dòng lệnh trong Quicksilver (Quicksilver> Preferences> Plug Ins).


1

Bạn có thể làm một cái gì đó như:

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

Bây giờ bảng của bạn chứa nhiều tệp (từ các thư mục khác nhau) mà bạn có thể dán vào thư của mình.


-5

Tại sao không chỉ kéo và thả? Đôi khi các kỹ thuật viên trở nên quá phức tạp và quên đi những điều đơn giản mà Mac có thể làm.


Ồ Ba người phản đối kéo và thả.
Zo219

3
Không, những người phản đối câu trả lời "Tại sao không chỉ kéo và thả?" cho một câu hỏi hỏi về cách làm một cái gì đó với AppleScript.
Duncan Babbage
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.