2017-12-24 27 views
0

撮影する写真の種類には、2種類のISO感度が必要です。 1.)ISO-200 2.)ISO-400。私の現在のワークフローは、どのISO設定を使用したかによって変わります。毎日の終わりに、私はすべての画像を対応するフォルダに分けます。これは私が自動化しようとしているいくつかの項目の1つです。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文に "Path"を追加してください。これはあなたが、その後

がGET-として新しい場所に画像を移動またはコピーするにはif文の中にコピー項目または移動-項目をコマンドレットを使用することができます

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

イメージファイルへの完全なパスが含まれています

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

関連する問題