如何使用PowerShell以编程方式访问图像或视频的“采用日期”字段?

时间:2011-07-26 17:48:19

标签: powershell

我正在尝试转换一堆图片和视频,但是当我将其转换为新格式时,我忽略了原始文件的属性。我希望能够从旧文件中读取“Date of”属性,并使用PowerShell在新文件上更新它。

2 个答案:

答案 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.BitmapEBGreen mentioned将用于图片,但我担心我也不知道视频文件的.NET选项。