我正在尝试转换一堆图片和视频,但是当我将其转换为新格式时,我忽略了原始文件的属性。我希望能够从旧文件中读取“Date of”属性,并使用PowerShell在新文件上更新它。
答案 0 :(得分:11)
我现在无法测试它(没有任何带有XIF数据的图像,但我认为这应该有效:
[reflection.assembly]::LoadWithPartialName("System.Drawing")
$pic = New-Object System.Drawing.Bitmap('C:\PATH\TO\SomePic.jpg')
$pic.GetPropertyItem(36867).Value
答案 1 :(得分:3)
通常,您可以通过shell 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 )
但是,根据the comments on another question,设置这些属性没有通用机制。 System.Drawing.Bitmap
类EBGreen mentioned将用于图片,但我担心我也不知道视频文件的.NET选项。