การคัดลอกไฟล์ไปยังคลิปบอร์ดโดยใช้ applescript


11

บ่อยครั้งที่ฉันพบว่าตัวเองอยู่ที่บรรทัดคำสั่งที่ต้องการคัดลอกไฟล์ไปยังคลิปบอร์ดเพื่อให้ฉันสามารถวางพวกเขาเป็นสิ่งที่แนบมาใน Mail หากฉันมีไฟล์รูปภาพ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 และ command V; voila, ไฟล์ทั้งสองแสดงเป็นไฟล์แนบ) ... แต่ฉันจะทำสิ่งนี้จากบรรทัดคำสั่งได้อย่างไร


1
นี่เป็นความเจ็บปวดใน tuckus จาก AppleScript ฉันขอแนะนำให้เลือกหนึ่งในผู้จัดการคลิปบอร์ดสคริปต์หรือใช้ Cocoa NSPasteboard ผ่านภาษาสคริปต์ที่คุณชื่นชอบ อีกตัวเลือกหนึ่งอาจเป็นการสร้างโฟลเดอร์การกระทำดังนั้นคุณสามารถคัดลอกไฟล์ไปยังโฟลเดอร์จากนั้นให้ Finder เลือกรายการทั้งหมดในโฟลเดอร์คัดลอกไปยังคลิปบอร์ดและล้างโฟลเดอร์ หากคุณเพียงต้องการส่งอีเมลไฟล์เป็นสิ่งที่แนบมาอีกวิธีหนึ่งคือทำซ้ำผ่านรายการของคุณและสร้าง Mail →ข้อความออกใหม่→เนื้อหา→ไฟล์แนบอีเมล
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> หน้าต่าง Preferences เพื่อเปิดหน้าต่าง preferences คลิกที่การตั้งค่าที่ด้านบนขวาของหน้าต่าง ทางด้านซ้ายคลิกที่เครื่องมือบรรทัดคำสั่งและติดตั้ง

ในเทอร์มินัลคุณจะสามารถพิมพ์ได้

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

การกด Enter จะส่งไฟล์เหล่านั้นไปยังบานหน้าต่างแรกของ Quicksilver กดแท็บเพื่อย้ายไปยังบานหน้าต่างการกระทำและเลือกการดำเนินการจดหมาย / อีเมลใหม่พร้อมไฟล์แนบ กด Enter จากนั้นอีเมลใหม่พร้อมไฟล์ที่คุณเลือกจะปรากฏขึ้น

โปรดทราบว่าคุณจะต้องติดตั้งปลั๊กอิน Mail และ Command Line ใน Quicksilver (Quicksilver> Preferences> 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
Duncan Babbage
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.