2011-07-26 10 views
7

मैं चित्रों और वीडियो का एक समूह बदलने की कोशिश कर रहा हूं, लेकिन जब मैं इसे एक नए प्रारूप में परिवर्तित करता हूं तो मैं obvioulsy मूल फ़ाइल के गुणों को खो देता हूं। मैं पुरानी फ़ाइल से "तिथि ली गई" संपत्ति को पढ़ने में सक्षम होना चाहता हूं और पावरहेल का उपयोग करके इसे नए पर अपडेट करना चाहता हूं।मैं शक्तियों का उपयोग कर किसी छवि या वीडियो के "दिनांकित" फ़ील्ड में प्रोग्रामेटिक पहुंच कैसे प्राप्त कर सकता हूं?

उत्तर

8

मैं अभी (परीक्षण कर सकते हैं नहीं XIF डेटा के आसपास बिछाने के साथ किसी भी चित्र नहीं है, लेकिन मुझे लगता है कि यह काम करना चाहिए:

[reflection.assembly]::LoadWithPartialName("System.Drawing") 
$pic = New-Object System.Drawing.Bitmap('C:\PATH\TO\SomePic.jpg') 
$pic.GetPropertyItem(36867).Value 
+0

यह आधा कहानी है जिसे मैं एक तस्वीर से डेटकेन प्राप्त कर सकता हूं, एक वीडियो (एमपीजी, डब्लूएमवी) के बारे में कैसे? – JNappi

+0

हम्म ... मैं कुछ पोकिंग करूँगा। मैं ईमानदार होने के लिए निश्चित नहीं हूँ। – EBGreen

+3

यह एक काटने वाला सरणी देता है। इसे [डेटाटाइम] में बदलने के लिए आपको निम्न कार्य करने की आवश्यकता होगी: '$ bitearr = $ pic.GetPropertyItem (36867)। वैल्यू $ स्ट्रिंग = [System.Text.Encoding] :: ASCII.GetString ($ bitearr) [डेटाटाइम ] :: ParseExact ($ string, "yyyy: MM: dd hH: mm: ss'0", $ null) '' –

3

सामान्य तौर पर, आप किसी भी विस्तारित संपत्ति का उपयोग कर सकते । खोल GetDetailsOf विधि के माध्यम से एक्सप्लोरर में दिखाया गया है एक फ़ाइल के लिए यहाँ एक छोटी उदाहरण, another answer से अनुकूलित है:

$file = Get-Item IMG_0386.jpg 
$shellObject = New-Object -ComObject Shell.Application 
$directoryObject = $shellObject.NameSpace($file.Directory.FullName) 
$fileObject = $directoryObject.ParseName($file.Name) 

$property = 'Date taken' 
for(
    $index = 5; 
    $directoryObject.GetDetailsOf($directoryObject.Items, $index) -ne $property; 
    ++$index) { } 

$value = $directoryObject.GetDetailsOf($fileObject, $index) 


हालांकि,के अनुसार, इन गुणों के लिए कोई सामान्य उद्देश्य तंत्र नहीं है। System.Drawing.Bitmap कक्षा EBGreen mentioned छवियों के लिए काम करेगी, लेकिन मुझे डर है कि मुझे वीडियो फ़ाइलों के लिए .NET विकल्प के बारे में भी पता नहीं है।

+0

तो यह विशेष रूप से ली गई विशेषता के लिए कैसे काम करता है? – Cullub

+0

'$ संपत्ति = 'तिथि ली गई' का उपयोग" तिथि लेने "संपत्ति की अनुक्रमणिका को खोजने के लिए किया जाता है, और खोल वस्तुओं का उपयोग उस संपत्ति को फ़ाइल के लिए पढ़ने के लिए किया जाता है। –

संबंधित मुद्दे

 संबंधित मुद्दे