亲爱的stackoverflowers,
我的某些文件存在问题。我想搜索.jpg文件的特定属性值。特别是"评论"字段。
我尝试过这样:
(Get-ChildItem -file C:\picture.jpg | Select-Object -Property *).attributes
我收到的只是:
Archive
嗯,这对我没有帮助。 我想知道,这是什么"存档"。那里(或者其他地方?)必须是我寻求的那些信息。
(Get-ChildItem -file C:\picture.jpg | Select-Object -Property *)
Attributes : Archive
除了我已经获得的信息之外,我还没有给我任何相关信息。
我想我应该能够通过这个PowerShell包获得所需的信息: Technet - EXIF 但是,有没有办法轻松访问这些数据,使用板载PowerShell? (我想在许多不同的计算机上使用它)
提前致谢!
答案 0 :(得分:2)
您可以尝试这样的事情:
function MakeString
{
$s=""
for ($i=0 ; $i -le $args[0].value.length; $i ++)
{
if ( [int][char]$args[0].value[$i] -ne 0 )
{
$s = $s + [char]$args[0].value[$i]
}
}
$s
}
[void][reflection.assembly]::loadfile( "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll")
$foo=New-Object -TypeName system.drawing.bitmap -ArgumentList "c:\test_image_with_exif_comment_populated.jpg"
makestring $foo.GetPropertyItem(37510) #37510 is the property ID for exif comment use 40092 for property XPComment
请记住,如果未填充属性注释,则命令 $foo.GetPropertyItem(37510)
会返回错误!
或避免错误使用此功能:
function get-jpgcomment ( [string]$path )
{
[void][reflection.assembly]::loadfile( "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll")
$foo=New-Object -TypeName system.drawing.bitmap -ArgumentList $path #"c:\Users\baric\Pictures\IMG\b.jpg"
try
{
$a = $foo.GetPropertyItem(37510)
-join ($a.value | % { if ([int][char]$_ -ne 0) {[char]$_} })
}
catch
{}
}
这样称呼:
get-jpgcomment c:\myimage.jpg
如果未填充属性注释,则返回$null
。