2016-05-23 6 views
0

Ich möchte alle VERTICAL und SMALL Bilder aus einem bestimmten Ordner löschen.Löschen von Bildern basierend auf Dimensionen mit PowerShell

Ich habe einen Ordner, ich möchte nicht die vertikalen Bilder oder Bilder mit Abmessungen von weniger als 600 x 600 Pixel. Ich glaube, PowerShell ist die beste Lösung, da ich Python nicht auf meinem Computer verwenden kann.

Ich mache das, weil ich die vertikalen/kleinen Bilder nicht jeden Tag manuell aus meinem Ordner löschen möchte. (Es bekommt jeden Tag neue)

Jede Hilfe würde sehr geschätzt werden !!

Hier ist mein Code:

cd C:\Users\Jack\Desktop\Test 

$c = 5 
Function Get-FileMetaData { 

    Param([string[]]$folder) 
    foreach($sFolder in $folder) { 
     $a = 0 
     $b = 1 

     $objShell = New-Object -ComObject Shell.Application 
     $objFolder = $objShell.namespace($sFolder) 

     foreach ($File in $objFolder.items()) { 

      $FileMetaData = New-Object PSOBJECT 
      for ($a ; $a -le 266; $a++) { 
       if($objFolder.getDetailsOf($File, $a)) { 

        $hash += @{$($objFolder.getDetailsOf($objFolder.items, $a)) = 
        $($objFolder.getDetailsOf($File, $a)) } 
        $FileMetaData | Add-Member $hash 

        if ($($objFolder.getDetailsOf($objFolder.items, $a)) -eq "Height") { 
         Write-Host $($objFolder.getDetailsOf($objFolder.items, $a)) ===== 
         $($objFolder.getDetailsOf($File, $a)) 
        } 

        if ($($objFolder.getDetailsOf($objFolder.items, $a)) -eq "Width") { 
         Write-Host $($objFolder.getDetailsOf($objFolder.items, $a)) ===== 
         $($objFolder.getDetailsOf($File, $a)) 
        } 

        if ($($objFolder.getDetailsOf($objFolder.items, $a)) -eq "Name") { 
         Write-Host $($objFolder.getDetailsOf($objFolder.items, $a)) ===== 
         $($objFolder.getDetailsOf($File, $a)) 
        } 

        $b++ 
        $hash.clear() 

       } #end if 
      } #end for 
     Write-Host $a 
     $a=0 
     $FileMetaData 
     } #end foreach $file 
    $c++ 
    Write-Host c = $c 
    } #end foreach $sfolder 
} #end Get-FileMetaData 

Write-Host c = $c 

$h = Get-FileMetaData C:\Users\Jack\Desktop\Test | select Height 
$w = Get-FileMetaData C:\Users\Jack\Desktop\Test | select Width 
$n = Get-FileMetaData C:\Users\Jack\Desktop\Test | select Name 

$h 
Write-Host w = $w 
Write-Host name = $n 

$SpecChars = '!', "{", "}", '"', '£', '$', '%', '&', '^', '*', '(', ')', '@', '=', '+', '¬', '`', '\', '<', '>', '?', '/', ':', ';', '#', '~', "'", '-', "Name", "N", "a", "m", "e", ' ' 
$remspecchars = [string]::join('|', ($SpecChars | % {[regex]::escape($_)})) 


if (($h) -replace '\D+(\d+)','$1' -gt ($w) -replace '\D+(\d+)','$1') { 

     Write-Host "VERTICAL" 

     Write-Host name = $n 

     $d = $n -replace $remspecchars, "" 
     $d.split() 
     Write-Host $d 
     $tally = 0 
     while($tally -ne $d.Count) { 
      del $d[$tally] 
      $tally++ 
     } 


     $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") 
    } 

Write-Host "Finished" 
+0

Bitte stellen Sie sicher, dass Sie diese Zeilen lesen und versuchen, Ihre Frage zu verbessern: http://stackoverflow.com/help/mcve –

+0

Hier ist mein Code https://drive.google.com/open?id=0B15ToJa5Sa4cdWlXMllwcDlza0E – Jacksmackod

+0

Bitte geben Sie alle wichtigen Informationen für Ihre Frage in Ihre Frage ein. Wenn externe Ressourcen verschwinden (aus welchen Gründen auch immer), wird Ihre Frage für alle anderen nutzlos. –

Antwort

1

try this

$folder = 'C:\temp\Pictures\' 

$image = New-Object -ComObject Wia.ImageFile 

$pictures = Get-ChildItem $folder *.jpg | ForEach-Object { 
    $image.LoadFile($_.fullname) 
    $size = $image.Width.ToString() + 'x' + $image.Height.ToString() 

    $orientation = $image.Properties | ? {$_.name -eq 'Orientation'} | % {$_.value} 
    if ($orientation -eq 6) { 
     $rotated = $true 
    } else { 
     $rotated = $false 
    } 

    $heightGtWidth = if ([int]$image.Height.ToString() -gt [int]$image.Width.ToString()) { 
     $true 
    } else { 
     $false 
    } 

    [pscustomobject]@{ 
     Fullname = $_.FullName 
     Size = $size 
     Rotated = $rotated 
     HeightGtWidth = $heightGtWidth 
    } 
} 

$pictures 
+0

Dies wäre besser mit einer Erklärung dessen, was Sie anders gemacht haben und warum, so dass der Fragesteller und andere Leser es besser verstehen können. – briantist

+0

Sorry, aber was ich suche, ist das Löschen von Bildern, die entweder vertikal sind oder Abmessungen kleiner als 600 x 600 Pixel haben – Jacksmackod

+0

Vielen Dank für Ihre Hilfe! Ich musste nur ein bisschen zwicken, aber du hast die meiste Arbeit gemacht. – Jacksmackod

Verwandte Themen