プロパティの詳細を一括でリストで書き出す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 総ビット レート