มีวิธีใดในการตั้งค่า / เพิ่มแท็กในไฟล์ที่มี Applescript ภายใต้ Mavericks


9

พยายามย้ายสคริปต์บางส่วนของฉันจากป้ายกำกับไปยังแท็กภายใต้ Mavericks แต่ฉันไม่สามารถหาวิธีตั้งค่า / เพิ่มแท็กด้วย Applescript

ใครที่รู้วิธีการทำเช่นนี้? ตราบใดที่ฉันสามารถคิดแท็กไม่ใช่เรื่องใหม่ได้เพียงใหม่ในแง่ของการเป็นส่วนสำคัญของเครื่องมือค้นหาที่อัปเดตแล้ว

คำตอบ:


7

คุณสามารถใช้ xattr สิ่งนี้คัดลอกแท็กจาก file1 ไปยัง file2:

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เป็นตัวป้อนบรรทัด)

หากการตั้งค่าสถานะ kColor ใน com.apple.FinderInfo ไม่ได้ตั้งค่า Finder จะไม่แสดงวงกลมสำหรับสีถัดจากไฟล์ หากการตั้งค่าสถานะ kColor เป็นสีส้มและไฟล์มีแท็กสีแดง Finder จะแสดงทั้งวงกลมสีแดงและสีส้ม คุณสามารถตั้งค่าสถานะ kColor ด้วย AppleScript:

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")' เป็นไวยากรณ์ plist แบบเก่าสำหรับสิ่งนี้:

<?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พิมพ์ค่าของบิตที่ใช้สำหรับการตั้งค่าสถานะ kColor สีแดงคือ C, สีส้มคือ E, สีเหลืองคือ A, สีเขียวคือ 4, สีน้ำเงินคือ 8, สีม่วงแดงคือ 6, และสีเทาคือ 2 (ธงที่จะเพิ่ม 1 ในค่าที่ไม่ได้ใช้ใน OS X)


แท็ก ".GGG" หรือกราฟิกที่แสดงผลเป็นสีคืออะไร ไม่สามารถหาบางอย่างเช่น "C.png" บน

1

คำตอบได้รับการโพสต์ในรายชื่อผู้ใช้ Applescript:

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


อ้างจากรหัสหน้าเขียนโดย Shane Stanley

คุณสามารถทำได้ง่ายพอกับ AppleScriptObjC นี่คือตัวจัดการเพื่อดึงแท็กตั้งค่าแท็กและเพิ่มแท็ก:

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:

หากคุณบันทึกไว้ในไลบรารีสคริปต์คุณสามารถใช้จาก Mavericks ได้

- Shane Stanley www.macosxautomation.com/applescript/apps/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.