概要
デジカメで撮った画像が1つのフォルダの中にたまってしまっているので
ExIf情報より撮影日ごとにフォルダ分けて整理する
・今回はmove(移動)ではなくてcopy(コピー)にする
コピー元(フォルダ)とコピー先(フォルダ)を指定して実行
・指定したコピー元が存在しない場合はコピーを行わない
・指定したコピー先が存在しない場合は作成してコピーを行う
・対象ファイルは「jpeg」「jpg」固定(大文字・小文字は気にしない)
・ExIf情報に撮影日時が存在しない場合は「unknown」フォルダに移動
・コピー先に対象ファイルが存在する場合はメッセージを出力してコピーしない
関数
実行例
# 実行 PS > Copy-ImagesByDateTimeOriginal -CopyFolderPath "C:DCIM" -DestFolderPath "C:DateTimeOriginal"
メモ
.Net Frameworkを呼び出す
[完全修飾名のクラス]::静的メソッド(引数)
画像ファイルのメタデータを取得
PS > [System.Drawing.Imaging.Metafile]::FromFile(<<画像ファイルのフルパス>>)例)
PS >[System.Drawing.Imaging.Metafile]::FromFile("C:\DateTimeOriginal\Blue hills.jpg") Tag : PhysicalDimension : {Width=800, Height=600} Size : {Width=800, Height=600} Width : 800 Height : 600 HorizontalResolution : 300 VerticalResolution : 300 Flags : 77960 RawFormat : [ImageFormat: b96b3cae-0728-11d3-9d7b-0000f81ef32e] PixelFormat : Format24bppRgb Palette : System.Drawing.Imaging.ColorPalette FrameDimensionsList : {7462dc86-6180-4c7e-8e3f-ee7333a7a483} PropertyIdList : {282, 283, 296, 20515...} PropertyItems : {282, 283, 296, 20515...}
フォルダ配下の指定した拡張子のファイル情報を取得(Get-ChildItem)
・引数[-Include]を指定して対象となる拡張子のファイル情報を取得
※複数の拡張子を指定する場合はカンマ「,」を使用
※拡張子の大文字、小文字は気にする必要はなし
PS > Get-ChildItem -Path <<フォルダのフルパス>> -Recurse -Include *.<<拡張子>>, *.<<拡張子>>■補足
例1)フォルダ・ファイル情報を取得
PS > Get-ChildItem -Path C:\sample ディレクトリ: C:\sample Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2013/07/09 13:59 sample -a--- 2013/07/09 13:57 0 sample1.txt -a--- 2013/07/09 13:58 0 sample2.txt例2)そのまま引数「Include」で拡張子を指定したが取得できない
PS > Get-ChildItem -Path C:\sample -Include *.txt # 表示されない例3)「フォルダのフルパス」の後ろに「\*」を追加して取得可能
PS > Get-ChildItem -Path C:\sample\* -Include *.txt ディレクトリ: C:\sample Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2013/07/09 13:57 0 sample1.txt -a--- 2013/07/09 13:58 0 sample2.txt
※サブフォルダ配下取得する場合(Recurseを指定)は特に気にしなくてよかった
パスと子パスを 1 つのパスに結合「Join-Path」
PS > Join-Path -Path <<パス>> -ChildPath <<子パス>>
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。