PowerShellで複数ファイルのプロパティを取得する方法(準備編)
プロパティの詳細を一括でリストで書き出すPowerShellスクリプト
完成したスクリプトは別ページにて完成編として公開しています。
PowerShellで画像のプロパティを書き出す
PowerShellで詳細プロパティの値を取得する(フォルダーを指定して複数ファイルを対象)
$shell=New-Object -Com Shell.Application Get-ChildItem D:\Pictures\EOS` D30 -recurse | Where-Object {-not $_.PSIsContainer} | ForEach-Object {$folderobj=$shell.NameSpace($_.DirectoryName);$item=$folderobj.ParseName($_.name);$folderobj.GetDetailsOf($item,22)}>test.txt
凡例 任意指定 ` はpath記述でスペースをエスケープ 22はプロパティ詳細の説明のタイトル項目の番号(末尾に一覧番号あり) オプション -recurseはサブフォルダも含む >は上書き、>>は追記 別の書き方として、次の「若手基盤系SEの日記。」さんのスクリプトでも同じ結果が得られます。 Get-ChildItemはオプションの指定で、拡張子やファイル名、ファイルサイズなどで検索して結果が得られます。
以下参考にしたサイト様
PowerShellで詳細プロパティの値を取得する(フォルダーを指定して複数ファイルを対象)
若手基盤系SEの日記。 大量のWordファイルのページ数を簡単に集計する方法(Powershell) http://blog.livedoor.jp/ryanorano/archives/2015-05-13.html
# 指定されたパス配下のファイルのファイル名とページ数をCSV出力する。 # 変数 $path = "D:\temp" $output = $path + "/output.csv" # 指定されたパス配下のファイルを取得 $target = Get-Childitem $path | Where-Object {-not $_.PSIsContainer} # WSHのShellオブジェクトを生成 $shell = New-Object -Com Shell.Application # ファイル分だけ繰り返す $target | ForEach-Object { # GetDetailsOfに必要なオブジェクト $folderobj = $shell.NameSpace($_.DirectoryName) $item = $folderobj.ParseName($_.name) # ファイル出力 $_.name + "`," + $folderobj.GetDetailsOf($item,148) | Add-Content $output }
@IT PowerShellのGet-ChildItemコマンドレットでファイル名の一覧を取得する(基本編) http://www.atmarkit.co.jp/ait/articles/0808/22/news129.html
PS > Get-ChildItem ……パラメータなしで実行する
PS > Get-ChildItem C:\Windows ……フォルダを指定して実行する
拡張子が「.log」「.dat」であるもので、かつ、ファイル名が「KB*」で始まらないファイルだけを抽出することができる PS > Get-ChildItem C:\Windows\*.* -include *.log,*.dat -exclude KB* ……名前を限定して実行する
ファイルの属性情報や最終更新日、サイズなどの付随情報が不要で、フォルダ/ファイル名だけを確認したいという場合には、-Nameオプションを使用
PS > Get-ChildItem C:\Windows\*.* -include *.log,*.dat -exclude KB* -Name > c:\result.txt
PS > Get-ChildItem C:\Windows -Recurse ……サブフォルダの内容も表示する
PS > Get-ChildItem C:\Windows -Recurse -Name ……サブフォルダも含めて、名前だけを表示させる
検索やソートの方法も参考になる PowerShellのGet-ChildItemコマンドレットでファイル名の一覧を取得する(応用編) http://www.atmarkit.co.jp/ait/articles/0808/29/news131.html
PowerShellで詳細プロパティの値を取得する(単一ファイル)
PowerShellをはじめよう ~PowerShell入門~ https://letspowershell.blogspot.jp/2015/11/powershell_18.html
# 詳細プロパティの取得 # シェルオブジェクトを作成 $Shell = New-Object -ComObject Shell.Application # フォルダの指定 $Folder = $Shell.NameSpace("C:\PowerShell") # ファイルの指定 $File = $Folder.parseName("P001.JPG") # 詳細プロパティ(撮影日時)の取得 $GET = $Folder.GetDetailsOf($File,12) Write-Host $GET
PowerShell from Japan!! Blog プロパティを抽出する Select-Object (PowerShell入門) http://blog.powershell-from.jp/?p=283
Get-ChildItemコマンドレットで取得可能なプロパティ PS C:\Work> Get-ChildItem | Get-Member -MemberType property
Get-ChildItemで取得できる結果からFullNameとLastWriteTimeの列のみを抜き出し PS C:\Work> Get-ChildItem | Select-Object FullName, LastWriteTime
その他
Windows管理者のためのPowerShell オブジェクト操作系コマンドレット http://powershell.wiki.fc2.com/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%93%8D%E4%BD%9C%E7%B3%BB%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%AC%E3%83%83%E3%83%88 ■「Get-ChildItem」を実行すると、カレントフォルダにある各ファイルの情報(Mode,LastWriteTime,Length Name)がFileInfoオブジェクトに格納されます。 5個のファイルがカレントフォルダに存在する場合、5個のFileInfoオブジェクトが配列となって出力されます。 Get-ChildItem | ForEach-Object {$_.Name + " : " + $_.Length} ■「ForEach-Object」は、「%」で置き換えることができます。 Get-ChildItem | % {$_.Name + " : " + $_.Length}
Qiita 【備忘録】PowerShell 指定したフォルダ以下の全てのファイルの絶対パスを取得する http://qiita.com/gyokufoo/items/56ea98116f9e559126f0 Get-ChildItem -Recurse | select-object fullname -append を追加すると追記になるはず コマンドを二回に分けて実行するときなどは、使えるかもしれない Get-ChildItem -Recurse | select-object fullname | out-file "sample.txt" -width 500 -append
PowerShellでファイルのディレクトリパスや上位ディレクトリ名を取得する方法 http://win.just4fun.biz/PowerShell/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%83%91%E3%82%B9%E3%82%84%E4%B8%8A%E4%BD%8D%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%90%8D%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html ディレクトリまで(ファイル名を除く) (Get-Item <ファイル>).DirectoryName or (Get-ChildItem <ファイル>).DirectoryName
Powershell 重複要素 異なる要素の出力と配列結合 http://viewse.blogspot.jp/2013/08/powershell.html ヒント 3)2つの配列を結合して、重複要素を重複させないようにする $unionArr = $array1 + $array2 | Select-Object –Unique 追加参照 ◆オブジェクトのキー重複を取り除く http://mtgpowershell.blogspot.jp/2011/08/blog-post.html
【プロパティの番号リスト】 Delphi Programming 816_ファイルのプロパティ http://mrxray.on.coocan.jp/Delphi/plSamples/816_FileProperty.htm
000 名前 001 サイズ 002 項目の種類 003 更新日時 004 作成日時 005 アクセス日時 006 属性 007 オフラインの状態 008 オフラインで利用可能 009 認識された種類 010 所有者 011 分類 012 撮影日時 013 参加アーティスト 014 アルバム 015 年 016 ジャンル 017 指揮者 018 タグ 019 評価 020 作成者 021 タイトル 022 件名 023 分類項目 024 コメント 025 著作権 026 トラック番号 027 長さ 028 ビット レート 029 保護 030 カメラのモデル 031 大きさ 032 カメラの製造元 033 会社 034 ファイルの説明 035 プログラム名 036 継続時間 037 オンライン 038 再帰 039 場所 040 任意出席者アドレス 041 任意出席者 042 開催者住所 043 開催者名 044 アラーム時刻 045 必須出席者アドレス 046 必須出席者 047 リソース 048 会議の状態 049 空き時間情報 050 合計サイズ 051 アカウント名 052 進捗状況 053 コンピューター 054 記念日 055 秘書の名前 056 秘書の電話 057 誕生日 058 住所 (会社) 059 市 (会社) 060 国/地域 (会社) 061 私書箱 (会社) 062 郵便番号 (会社) 063 都道府県 (会社) 064 番地 (会社) 065 FAX 番号 (会社) 066 会社のホーム ページ 067 会社電話 068 コールバック番号 069 自動車電話 070 子供 071 会社代表電話 072 部署 073 電子メール アドレス 074 電子メール2 075 電子メール3 076 電子メールの一覧 077 電子メール表示名 078 表題2 079 名 080 氏名 081 性別 082 名2 083 趣味 084 住所 (自宅) 085 市 (自宅) 086 国/地域 (自宅) 087 私書箱 (自宅) 088 郵便番号 (自宅) 089 都道府県 (自宅) 090 番地 (自宅) 091 自宅 FAX 092 自宅電話 093 IM アドレス 094 イニシャル 095 役職 096 ラベル 097 姓 098 住所 (郵送先) 099 ミドル ネーム 100 携帯電話 101 ニックネーム 102 勤務先所在地 103 住所 (その他) 104 ほかの市区町村 105 他の国/地域 106 他の私書箱 107 他の郵便番号 108 他の都道府県 109 他の番地 110 ポケットベル 111 肩書き 112 市区町村 (郵送先) 113 国/地域 114 私書箱 (郵送先) 115 郵便番号 (郵送先) 116 都道府県 117 番地 (郵送先) 118 プライマリ電子メール 119 通常の電話 120 職業 121 配偶者 122 サフィックス 123 TTY/TTD 電話 124 テレックス 125 Web ページ 126 内容の状態 127 内容の種類 128 取得日時 129 アーカイブ日時 130 完了日 131 デバイス カテゴリ 132 接続済み 133 探索方法 134 フレンドリ名 135 ローカル コンピューター 136 製造元 137 モデル 138 ペアリング済み 139 クラス 140 状態 141 クライアント ID 142 貢献者 143 コンテンツの作成日時 144 前回印刷日 145 前回保存日時 146 事業部 147 ドキュメント ID 148 ページ数 149 スライド 150 総編集時間 151 単語数 152 期限 153 終了日 154 ファイル数 155 ファイル名 156 ファイル バージョン 157 フラグの色 158 フラグの状態 159 空き領域 160 ビットの深さ 161 水平方向の解像度 162 幅 163 垂直方向の解像度 164 高さ 165 重要度 166 添付 167 削除 168 暗号化の状態 169 フラグの有無 170 終了済 171 未完了 172 開封の状態 173 共有 174 製作者 175 日付時刻 176 フォルダー名 177 フォルダーのパス 178 フォルダー 179 参加者 180 パス 181 場所ごと 182 種類 183 連絡先の名 184 履歴の種類 185 言語 186 最終表示日 187 説明 188 リンクの状態 189 リンク先 190 URL 191 メディアの作成日時 192 リリース日 193 エンコード方式 194 プロデューサー 195 発行元 196 サブタイトル 197 ユーザー Web URL 198 作者 199 添付ファイル 200 BCC アドレス 201 BCC 202 CC アドレス 203 CC 204 会話 ID 205 受信日時 206 送信日時 207 送信元アドレス 208 差出人 209 添付ファイルの有無 210 送信者アドレス 211 送信者名 212 ストア 213 送信先アドレス 214 To do タイトル 215 宛先 216 経費情報 217 アルバムのアーティスト 218 アルバム ID 219 ビート数/分 220 作曲者 221 イニシャル キー 222 コンパイルの一部 223 雰囲気 224 セットのパート 225 期間 226 色 227 保護者による制限 228 保護者による制限の理由 229 使用領域 230 EXIF バージョン 231 イベント 232 露出補正 233 露出プログラム 234 露出時間 235 絞り値 236 フラッシュ モード 237 焦点距離 238 35mm 焦点距離 239 ISO 速度 240 レンズ メーカー 241 レンズ モデル 242 光源 243 最大絞り 244 測光モード 245 向き 246 人物 247 プログラムのモード 248 彩度 249 対象の距離 250 ホワイト バランス 251 優先度 252 プロジェクト 253 チャンネル番号 254 この回のタイトル 255 字幕 256 再放映 257 SAP 258 放送日 259 プログラムの説明 260 記録時間 261 ステーション コール サイン 262 局名 263 概要 264 抜粋 265 自動要約 266 検索のランキング 267 秘密度 268 共有ユーザー 269 共有状態 270 製品名 271 製品バージョン 272 サポートのリンク 273 ソース 274 開始日 275 課金情報 276 完了 277 仕事の所有者 278 総ファイル サイズ 279 商標 280 ビデオ圧縮 281 ディレクター 282 データ速度 283 フレーム高 284 フレーム率 285 フレーム幅 286 総ビット レート