আমি কীভাবে ম্যাকসের ক্লিপবোর্ডে প্রোগ্রামিকভাবে একাধিক ফাইল অনুলিপি করব?


1

আমি শেষ পর্যন্ত একটি বাশ ফাংশন রাখতে চাই to-clipboardযা ফাইলের পথ পায় এবং ক্লিপবোর্ডে ফাইলগুলি অনুলিপি করে। সহায়ক হিসাবে অন্য স্ক্রিপ্টিং ভাষা ব্যবহার করা ঠিক আছে। আমার কাছে বর্তমানে একটি একক ফাইল অনুলিপি করার জন্য রয়েছে:

file-to-clipboard() {
    osascript \
        -e 'on run args' \
        -e 'set the clipboard to POSIX file (first item of args)' \
        -e end \
        "$@"
}

এই আপেলসক্রিপ্টটি রয়েছে যা অনুমিতভাবে একাধিক ফাইলগুলি অনুলিপি করতে পারে তবে আমি এটি মোটেও পছন্দ করি না:

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

সম্পর্কিত প্রশ্ন:

অ্যাপ্লিক্রিপ্ট ব্যবহার করে ক্লিপবোর্ডে ফাইলগুলি অনুলিপি করা হচ্ছে


আপনি কি ব্যাশ প্রম্পটে টাইপ করতে সক্ষম হতে চান এবং ক্লিপবোর্ডের পরে কী থাকতে হবে তা ব্যাখ্যা করতে পারেন? (আপনি যদি ক্লিপবোর্ডে ফাইলের পথ, বা ফাইলের বিষয়বস্তু ইত্যাদি চান তবে আমি পরিষ্কার নই ...) এছাড়াও, আপনি কমান্ডটি দেখেছেন pbcopy?
অ্যাশলে

উত্তর:


3

আপনি নীচে অ্যাপলস্ক্রিপ্টটি ব্যাশ ফাংশন তৈরি করতে ব্যবহার করতে পারেন যা আপনাকে ক্লিপবোর্ডে কমান্ড-লাইন আর্গুমেন্ট হিসাবে তাদের ফাইল পাথ সরবরাহ করে একাধিক ফাইল অবজেক্ট যুক্ত করতে দেয়। এটি trueসাফল্য এবং falseব্যর্থতার পরে ফিরে আসে ।

আপনি টার্মিনালের অভ্যন্তরে আইটেমগুলি আটকে দিতে পারবেন না তবে আপনি যদি ফাইন্ডারের কোনও স্থানে নেভিগেট করেন তবে আপনি সেখানে আইটেমগুলি পেস্ট করতে পারেন। আমি আশা করি এটি আপনার পরবর্তী সময়ের মত ছিল।

use framework "Appkit"
use Finder : application "Finder"

property this : a reference to current application
property NSFileManager : a reference to NSFileManager of this
property NSImage : a reference to NSImage of this
property NSMutableArray : a reference to NSMutableArray of this
property NSPasteboard : a reference to NSPasteboard of this
property NSString : a reference to NSString of this
property NSURL : a reference to NSURL of this

property pb : missing value

on run input
    if input's class = script then set input to ¬
        Finder's selection as alias list

    init()
    clearClipboard()
    addToClipboard(input)
end run


to init()
    set pb to NSPasteboard's generalPasteboard()
end init

to clearClipboard()
    if pb = missing value then init()
    pb's clearContents()
end clearClipboard

to addToClipboard(fs)
    local fs

    set fURLs to NSMutableArray's array()
    set FileManager to NSFileManager's defaultManager()

    repeat with f in fs
        if f's class = alias then set f to f's POSIX path
        set fp to (NSString's stringWithString:f)'s ¬
            stringByStandardizingPath()
        if (FileManager's fileExistsAtPath:fp) then ¬
            (fURLs's addObject:(NSURL's fileURLWithPath:fp))
    end repeat

    if pb = missing value then init()
    pb's writeObjects:fURLs
end addToClipboard

আমি স্ক্রিপ্ট সম্পাদক ব্যবহার করে আপনার মেশিনে এই স্ক্রিপ্টটি কোনও .applescriptবা .scptফাইল হিসাবে সংরক্ষণ করার পরামর্শ দেব । তারপরে, আপনার টার্মিনালে আপনার ব্যাশ ফাংশন তৈরি করুন:

pbadd() {
    osascript "/Path/To/Saved AppleScript.scpt" "$@"
}

তারপরে, ব্যবহার করতে:

pbadd ~/Pictures/*.jpg
pbadd ~/Documents/Some\ file.pdf ~/Music/A\ Random\ Song.mp3
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.