ম্যাভেরিক্সের অধীনে অ্যাপ্লিকেশন সহ কোনও ফাইলে ট্যাগ সেট / অ্যাড করার কোনও উপায়?


9

আমার কিছু স্ক্রিপ্টগুলি ম্যাভেরিক্সের অধীনে লেবেল থেকে ট্যাগগুলিতে সরিয়ে নিয়ে যাওয়ার চেষ্টা করছে, তবে আমি অ্যাপ্লিক্রিপ্টের সাথে ট্যাগ সেট / যুক্ত করার কোনও উপায় খুঁজে পাচ্ছি না।

যে কেউ এই কাজ করতে জানেন? আমি যতদূর জানতে পারি ট্যাগগুলি আসলে নতুন নয়, আপডেটেড ফাইন্ডারের আরও কেন্দ্রীয় অংশ হিসাবে পদে নতুন।

উত্তর:


7

আপনি xattr ব্যবহার করতে পারেন। এটি ফাইল 1 থেকে ফাইল 2 এ ট্যাগগুলি অনুলিপি করে:

xattr -wx com.apple.metadata:_kMDItemUserTags "$(xattr -px com.apple.metadata:_kMDItemUserTags file1)" file2
xattr -wx com.apple.FinderInfo "$(xattr -px com.apple.FinderInfo file1)" file2

ট্যাগগুলি একটি একক অ্যারের স্ট্রিং হিসাবে সম্পত্তি তালিকায় সংরক্ষণ করা হয়:

$ xattr -p com.apple.metadata:_kMDItemUserTags file3|xxd -r -p|plutil -convert xml1 - -o -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>Red
6</string>
    <string>aa</string>
    <string>Orange
7</string>
    <string>Yellow
5</string>
    <string>Green
2</string>
    <string>Blue
4</string>
    <string>Purple
3</string>
    <string>Gray
1</string>
</array>
</plist>

রঙগুলির জন্য ট্যাগগুলির মান Red\n6(যেখানে \nএকটি লাইনফিড থাকে) থাকে।

যদি com.apple.FinderInfo- এ কে কলার পতাকাটি সেট না করা থাকে, ফাইন্ডার ফাইলগুলির পাশের রঙগুলির জন্য চেনাশোনাগুলি প্রদর্শন করে না। যদি কে কলর পতাকাটি কমলাতে সেট করা থাকে এবং ফাইলটিতে লাল ট্যাগ থাকে তবে ফাইন্ডার লাল এবং কমলা উভয় বৃত্ত দেখায় shows আপনি অ্যাপলস্ক্রিপ্টের সাহায্যে কে-কালার পতাকা সেট করতে পারেন:

do shell script "xattr -w com.apple.metadata:_kMDItemUserTags '(\"Red\\n6\",\"new tag\")' ~/desktop/file4"
tell application "Finder" to set label index of file "file4" of desktop to item 1 of {2, 1, 3, 6, 4, 5, 7}

'("Red\n6","new tag")' এটির জন্য পুরানো স্টাইলের প্লিস্ট সিনট্যাক্স:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>Red
6</string>
    <string>new tag</string>
</array>
</plist>

xattr -p com.apple.FinderInfo file|head -n1|cut -c28-29কে-কালার পতাকার জন্য ব্যবহৃত বিটের মান মুদ্রণ করে। লাল হল সি, কমলা হল ই, হলুদ এ, সবুজ ৪, নীল 8, মজেন্টা is, এবং ধূসর ২। (যে মানটিতে 1 টি যুক্ত হবে এটি ওএস এক্স-তে ব্যবহৃত হবে না)


"ট্যাগ চিত্র" .পিএনজি বা রঙ-উপস্থাপিত গ্রাফিক্স? হার্ডডিস্কে "C.png" এর মতো কিছু খুঁজে পাওয়া যায়নি :)

1

উত্তরটি অ্যাপলস্ক্রিপ্ট ব্যবহারকারী তালিকায় পোস্ট করা হয়েছে:

http://lists.apple.com/archives/applescript-users/2015/Jan/msg00193.html


শেন স্ট্যানলি লিখেছেন পৃষ্ঠা-কোড থেকে উদ্ধৃতি

আপনি এটি অ্যাপলস্ক্রিপ্টঅবজিসি দিয়ে সহজেই যথেষ্ট করতে পারেন। ট্যাগগুলি পুনরুদ্ধার করতে, ট্যাগগুলি সেট করতে এবং ট্যাগ যুক্ত করতে হ্যান্ডলারগুলি এখানে রয়েছে:

use scripting additions
use framework "Foundation"

on returnTagsFor:posixPath -- get the tags
    set aURL to current application's |NSURL|'s fileURLWithPath:posixPath -- make URL
    set {theResult, theTags} to aURL's getResourceValue:(reference) forKey:(current application's NSURLTagNamesKey) |error|:(missing value)
    if theTags = missing value then return {} -- because when there are none, it returns missing value
    return theTags as list
end returnTagsFor:

on setTags:tagList forPath:posixPath -- set the tags, replacing any existing tags
    set aURL to current application's |NSURL|'s fileURLWithPath:posixPath -- make URL
    aURL's setResourceValue:tagList forKey:(current application's NSURLTagNamesKey) |error|:(missing value)
end setTags:forPath:

on addTags:tagList forPath:posixPath -- add to existing tags
    set aURL to current application's |NSURL|'s fileURLWithPath:posixPath -- make URL
    -- get existing tags
    set {theResult, theTags} to aURL's getResourceValue:(reference) forKey:(current application's NSURLTagNamesKey) |error|:(missing value)
    if theTags  missing value then -- add new tags
        set tagList to (theTags as list) & tagList
        set tagList to (current application's NSOrderedSet's orderedSetWithArray:tagList)'s allObjects() -- delete any duplicates
    end if
    aURL's setResourceValue:tagList forKey:(current application's NSURLTagNamesKey) |error|:(missing value)
end addTags:forPath:

আপনি যদি এগুলি কোনও স্ক্রিপ্ট লাইব্রেরিতে সংরক্ষণ করেন তবে আপনি সেগুলি ম্যাভারিক্স থেকেও ব্যবহার করতে পারেন।

- শেন স্ট্যানলি www.macosxautomation.com/applescript/apps/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.