क्या किसी को पता है कि ओएस एक्स पर फ़ाइल मेटाडेटा को सीधे संपादित करना संभव है या नहीं। विशेष रूप से perl में। पैरामीटर जिसे मैं विशेष रूप से बदलने की कोशिश कर रहा हूं kMDItemFSLabel
(फ़ाइल का रंग) है। मेरे पास एक खोज है और मुझे Mac::Glue या बाहरी एप्लिकेशन (फाइंडर) जैसे मॉड्यूल का उपयोग किए बिना ऐसा करने का कोई तरीका नहीं दिख रहा है।मैं ओएस एक्स में फ़ाइल मेटाडेटा कैसे संपादित कर सकता हूं?
उत्तर
kMDItemFSLabel
विशेषता खोजक की एक संपत्ति है। आपको अपने डेटा को बदलने के लिए खोजक के साथ संवाद करने के लिए एक तरीका का उपयोग करने की आवश्यकता है। जहां तक मुझे पता है, खोजक के माध्यम से बिना खोजक के डेटा को बदलने के लिए पर्ल के साथ आप कुछ भी नहीं कर सकते हैं।
उपयोग CamelBones नया संस्करण बाहर आता है जब:
ऐसा करने के कई तरीके हैं। यह पर्ल से उद्देश्य सी के लिए एक पुल की अनुमति देता है। फिर आपको कोको सिस्टम कॉल के साथ ऐप्पल विधि का उपयोग करने की आवश्यकता होगी। कोको के लिए खड़ी सीखने की अवस्था ...
आप डेवलपर उपकरण, उपयोग/डेवलपर/उपकरण है, तो/SetFile (मेटाडेटा आइटम समर्थन करता है)
उपयोग osascript खोजक करने के लिए संदेश भेजने के लिए बदलने के लिए फ़ाइल का रंग आप इसे करने पर संकेतों के लिए this पहले एसओ पोस्ट देख सकते हैं।
दुर्भाग्य से पर्ल से संबंधित उद्देश्य सी/कोको पुलों की अधिकांश मृत्यु हो गई है। मैकपर्ल 2005 से अपडेट नहीं किया गया है।
लगभग सभी सबसे आसान तरीकों को कम से कम न्यूनतम मात्रा में एप्पलस्क्रिप्ट जानने और उस स्क्रिप्ट के पाठ को कॉल करने की आवश्यकता होती है, हालांकि osascript पर एक इंटरप्लाटेड प्रकार कॉल।
अपने 1 लाइन रूप में, osascript बनाता पर्ल खूबसूरत दिखना:
osascript -e 'tell application "Finder"' -e "activate" -e "display dialog \"hello\"" -e 'end tell'
पर्ल से osascript का उपयोग करने के लिए, सबसे एक यहाँ दस्तावेज़ का उपयोग करें। I पुस्तक के उदाहरण हैं जिन्हें मैंने Applescript - The Definitive Guide और brian d foy on Controlling iTunes with Perl से बुलाया है। ,
#!/usr/bin/perl
use strict; use warnings;
use File::Spec;
use String::ShellQuote;
sub osahere {
my $rtr;
my $scr='osascript -ss -e '."'".join ('',@_)."'";
open my $fh, '-|', $scr or die "death on osascript $!";
$rtr=do { local $/; <$fh> };
close $fh or die "death on osascript $!";
return $rtr;
}
sub set_file_color {
# -- No color = 0
# -- Orange = 1
# -- Red = 2
# -- Yellow = 3
# -- Blue = 4
# -- Purple = 5
# -- Green = 6
# -- Gray = 7
my $file=shift;
my $color=shift || 0;
$color=0 if $color<0;
$color=7 if $color>7;
$file=File::Spec->rel2abs($file)
unless File::Spec->file_name_is_absolute($file);
$file=shell_quote($file);
return undef unless -e $file;
my $rtr=osahere <<"END_SET_COLOR" ;
tell application "Finder"
set f to "$file"
set ItemToLabel to POSIX file f as alias
set the label index of ItemToLabel to $color
end tell
END_SET_COLOR
return $rtr;
}
set_file_color("2591.txt",2);
खोजक रंग 0 है, तो kMDItemFSLabel
0. है अगर वहाँ किसी भी रंग सेट है kMDItemFSLabel
8-रंग हो जाता है:
यहाँ एक स्क्रिप्ट पर्ल में मैं osascript का उपयोग कर फ़ाइल रंग स्थापित करने के लिए लिखा है। यानी, लेबल "नारंगी" label index
1, kMDItemFSLabel
= 7 है; लेबल "लाल" label index
2, kMDItemFSLabel
= 6 है; और इसी तरह।
मैक फाइल सिस्टम मेटाडेटा पर संचालित करने के लिए पर्ल में कोई अंतर्निहित फ़ंक्शन नहीं है। या तो आप सीपीएएन से लाइब्रेरी का उपयोग करते हैं, या इसे स्वयं लिखते हैं, शायद सीपीएएन में किसी के लेखक के साथ ही नहीं।
वास्तव में यह लागू करने के लिए जटिल नहीं है। नीचे के रूप में दस्तावेज़ स्ट्रिंग में दिखाया गया है आप xattr
आदेश का उपयोग कर सकते हैं ... मैं फ़ाइलों की एक श्रृंखला के लिए नामित रंग लागू होता है जो एक अजगर स्क्रिप्ट में बुनियादी कार्य लपेटा है ...
#!/usr/bin/env python
"""
==================================
LABELCOLOR.PY - Colorize Finder labels of files
Usage:
labelcolor.py [color] *.jpg
where color is a name or abbreviation as defined below:
clear (c), gray (a), green (g), purple (p),
blue (b), yellow (y), red (r), orange (o)
The shell command used is:
xattr -wx com.apple.FinderInfo \
0000000000000000000400000000000000000000000000000000000000000000 myfile.txt
where 04 in the middle of the zeroes is the color definition
==================================
"""
import sys
import os
import subprocess
def colorizeFile(ColorName,FileName):
ReverseTable = {
"clear" : "01",
"gray" : "03",
"green" : "04",
"purple" : "06",
"blue" : "09",
"yellow" : "0A",
"red" : "0C",
"orange" : "0E",
"c" : "01",
"a" : "03",
"g" : "04",
"p" : "06",
"b" : "09",
"y" : "0A",
"r" : "0C",
"o" : "0E",
}
HexString = 18*"0" + ReverseTable.get(ColorName) + 44*"0"
Xcommand = 'xattr -wx com.apple.FinderInfo {0} {1}'.format(HexString,FileName)
ProcString = subprocess.check_call(Xcommand, stderr=subprocess.STDOUT,shell=True)
if __name__ == "__main__":
if len(sys.argv)<3:
sys.stderr.write(__doc__.format(sys.argv[0]))
else:
Cname = sys.argv[1]
Flist = sys.argv[2:]
for File in Flist:
colorizeFile(Cname.lower(),File)
sys.stderr.write("## Colorized {0} file(s) as {1}\n".format(len(Flist),Cname))
- 1. मैं .jar फ़ाइल को कैसे संपादित कर सकता हूं?
- 2. मैं पहले (rspec) में मेटाडेटा कैसे एक्सेस कर सकता हूं?
- 3. मैं m4a फ़ाइल से अध्याय मेटाडेटा कैसे पूछ सकता हूं?
- 4. मैक ओएस एक्स 10.5 में फाइंडर से मैं एकाधिक फ़ाइल ड्रैग/ड्रॉप कैसे संभाल सकता हूं?
- 5. मैं क्रोम एमआईएम प्रकार मैपिंग कैसे संपादित कर सकता हूं?
- 6. मैं ओएस एक्स में इशारा पहचानकर्ताओं को कैसे कार्यान्वित कर सकता हूं?
- 7. मैं ओएस एक्स टर्मिनल में विम कलर स्कीम कैसे सक्रिय कर सकता हूं?
- 8. मैं ओएस एक्स में एसबीटी को कैसे अनइंस्टॉल कर सकता हूं?
- 9. मैं कैसे ओएस एक्स में 10.6.7
- 10. मैक ओएस एक्स: किसी भी फ़ाइल
- 11. मैं एंड्रॉइड ओएस कीबोर्ड के स्रोत कोड को कैसे संपादित कर सकता हूं?
- 12. मैं सी ++ में एएसएसईआरटी (एक्स) कैसे बंद कर सकता हूं?
- 13. मैं ओएस एक्स 10.5.4
- 14. मैं प्रोग्रामिंग के चल रहे मैक ओएस एक्स संस्करण को कैसे निर्धारित कर सकता हूं?
- 15. मैं एक्सेस एक्सेस अनुमति को रीसेट कैसे कर सकता हूं, इसलिए ओएस एक्स फिर से पूछेगा?
- 16. ओएस एक्स टर्मिनल से मैं स्क्रीनसेवर (और स्क्रीन लॉक) कैसे शुरू कर सकता हूं?
- 17. मैं ओएस एक्स पर vim के * कंसोल * संस्करण को अपग्रेड कैसे कर सकता हूं?
- 18. मैं उस छवि में किसी मेटाडेटा को खोए बिना जावा में जेपीईजी छवियों को कैसे कंप्रेस कर सकता हूं?
- 19. क्या मैं ओएस एक्स में जावा 6 विकास कर सकता हूं?
- 20. मैक ओएस एक्स पर पर्ल स्क्रिप्ट कैसे चला सकता हूं?
- 21. मैक ओएस एक्स टाइटल बार में मैं अपना जावा स्विंग एप्लिकेशन शीर्षक कैसे बदल सकता हूं?
- 22. मैं जावा फ़ाइलडिअलॉग को ओएस एक्स में फ़ाइलटाइप के रूप में निर्देशिका कैसे स्वीकार कर सकता हूं?
- 23. मैक ओएस एक्स पर मैं 32-बिट (i386) के रूप में ओपनएसएसएल कैसे बना सकता हूं?
- 24. मैं वर्गीकरण/शब्द/एक्स पृष्ठ कैसे थीम कर सकता हूं?
- 25. ओएस एक्स
- 26. ओएस एक्स
- 27. क्या मैं एक Google क्रोम थीम संपादित कर सकता हूं?
- 28. मैं आउटपुटस्ट्रीम को कैसे कार्यान्वित कर सकता हूं जिसे मैं रिवाइंड कर सकता हूं?
- 29. ओएस एक्स
- 30. मैक ओएस एक्स मेजबान फ़ाइल को अनदेखा कर रहा है
के लिए धन्यवाद भयानक जवाब। यह ठीक वही है जिसकी मुझे तलाश थी। –
आपका स्वागत है – dawg