Powershell |自定义.jpg的参数/属性

时间:2014-05-06 08:43:11

标签: powershell attributes jpeg

亲爱的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? (我想在许多不同的计算机上使用它)

提前致谢!

1 个答案:

答案 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