我正在尝试转换一堆图片和视频,但是当我将其转换为新格式时,我忽略了原始文件的属性.我希望能够从旧文件中读取"Date of"属性,并使用PowerShell在新文件上更新它.
EBG*_*een 12
我现在无法测试它(没有任何带有XIF数据的图像,但我认为这应该有效:
[reflection.assembly]::LoadWithPartialName("System.Drawing")
$pic = New-Object System.Drawing.Bitmap('C:\PATH\TO\SomePic.jpg')
$bitearr = $pic.GetPropertyItem(36867).Value
$string = [System.Text.Encoding]::ASCII.GetString($bitearr)
$DateTime = [datetime]::ParseExact($string,"yyyy:MM:dd HH:mm:ss`0",$Null)
$DateTime
Run Code Online (Sandbox Code Playgroud)
通常,您可以通过shell 方法访问显示在资源管理器中的文件的任何扩展属性GetDetailsOf。这是一个简短的示例,改编自另一个答案:
$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 )
Run Code Online (Sandbox Code Playgroud)
但是,根据对另一个问题的评论,没有设置这些属性的通用机制。EBGreen提到的System.Drawing.Bitmap类适用于图像,但恐怕我也不知道用于视频文件的.NET选项。
| 归档时间: |
|
| 查看次数: |
9815 次 |
| 最近记录: |