2017-12-24 4 views
0

촬영하는 사진의 종류에 따라 두 가지 유형의 ISO 감도가 필요합니다. 1.) ISO-200 2.) ISO-400. 현재 사용중인 ISO 설정에 따라 현재 워크 플로가 변경됩니다. 하루가 끝날 때마다 모든 이미지를 해당 폴더로 분리합니다. 이것은 자동화하려고하는 여러 항목 중 하나입니다.Powershell의 메타 데이터를 기반으로 새 폴더로 이미지를 이동하는 방법

현재 이미지가 이미 "보관 폴더"로 가져온 후에이 작업을 수행 할 스크립트를 작성하려고합니다. 이것은 내가 지금까지 가지고있는 것입니다. ...

Function Get-FileMetaData 
{ 

Param([string[]]$folder) 
foreach($sFolder in $folder) 
{ 
$a = 0 
$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 
$hash.clear() 
} #end if 
} #end for 
$a=0 
$FileMetaData 
} #end foreach $file 
} #end foreach $sfolder 
} #end Get-FileMetaData 

$picdata = Get-FileMetaData -Folder 'D:\#Photos\To - Process\1' | select 
name, 'ISO speed', size, width, height 
$picdata.'ISO Speed' 

ISO 속도로 이미지를 필터링했지만 진행 방법을 잘 모르겠습니다. 어떤 도움을 주셔서 감사합니다! 나는 스크립팅 세계에있어 매우 새로운 것이다.

답변

0

select 문에 "경로"를 추가하십시오. 이는 이미지 파일의 전체 경로를 포함

select name, 'ISO speed', size, width, height, Path 

그런 다음 복사-항목을 사용하거나 이동 품목 cmdlet을 내에서 문이 이동하거나 새 위치로 이미지를 복사 할 경우 수

GET-로

foreach ($pic in $picdata) { 
    if ($pic.'ISO speed' -eq "ISO-200") { 
     Copy-Item -Path $pic.Path -Destination "d:\photos\some_other_folder" 
    } 
} 

참조 :

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/copy-itemFileMetaData 당신이 각 결과를 반복해야합니다, 여러 값을 반환https://docs.microsoft.com/en-gb/powershell/module/Microsoft.PowerShell.Management/Move-Item

관련 문제