2016-05-23 2 views
0

Я хотел бы удалить все изображения VERTICAL и SMALL из определенной папки.Удаление снимков по размерам с помощью PowerShell

У меня есть папка, в которой я не хочу вертикальных изображений или изображений с размерами менее 600 x 600 пикселей. Я считаю, что PowerShell лучше всего использовать, поскольку я не могу заставить Python работать на моем компьютере.

Я делаю это, потому что я не хочу вручную удалять вертикальные/маленькие изображения из моей папки каждый день. (Он получает новые каждый день)

Любая помощь была бы принята с благодарностью!

Вот мой код:

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

Пожалуйста, убедитесь, что вы читаете это и попытаться улучшить свой вопрос: http://stackoverflow.com/help/mcve –

+0

Здесь это мой код https://drive.google.com/open?id=0B15ToJa5Sa4cdWlXMllwcDlza0E – Jacksmackod

+0

Пожалуйста, включите всю важную информацию по вашему вопросу в свой вопрос. Если внешние ресурсы исчезнут (по какой-либо причине), ваш вопрос станет бесполезным для всех остальных. –

ответ

1

попробовать это

$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

Это было бы лучше с некоторым объяснением того, что вы сделали по-другому и почему, чтобы читатель и другие читатели могли лучше понять это. – briantist

+0

Извините, но я ищу, чтобы удалить фотографии, которые являются вертикальными или имеют размеры менее 600 x 600 пикселей. – Jacksmackod

+0

Благодарим за помощь! Мне просто пришлось немного подправить его, но вы сделали большую часть работы. – Jacksmackod

Смежные вопросы