#author("2018-10-28T14:02:26+09:00","","")
#navi(../)
* PowerShellでファイル一覧を取得し各ファイルの情報をCSV化する方法 [#u291ba98]
任意のフォルダ(ディレクトリ)のファイル一覧、更新日、ファイルサイズなどを取得し~
CSV化して使用したい場合など本資料が役に立つと思います。

#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* 関連記事 [#u3741024]
-[[CSVファイルのインポート・Import-Csv>PowerShell/CSVファイルのインポート・Import-Csv]]
-[[ファイル・ディレクトリのセキュリティ情報を取得する>PowerShell/ファイル・ディレクトリのセキュリティ情報を取得する]]
-[[ディレクトリのみ、ファイルのみの一覧を表示する方法>PowerShell/ディレクトリのみ、ファイルのみの一覧を表示する方法]]

* 動作確認環境 [#c94bc4e6]
 PS C:\> (Get-WmiObject Win32_OperatingSystem).Caption
 Microsoft Windows 10 Pro
 PS C:\> ($PSVersionTable).PSVersion.toString()
 5.1.17134.228


* ファイル名, フルパス名, ファイルサイズ, 更新日付 を取得 [#f293e1c0]
以下のスクリプト例は、テンポラリーフォルダ($ENV:TEMP)を対象にして実行してみます。

** テンポラリーフォルダのファイル一覧を取得する [#edb24c16]
 > cd $ENV:TEMP
 > Get-ChildItem * -Recurse | Select-Object Name, FullName, Length, LastWriteTime
画面への出力は以下の通りです。~
画面幅が狭いので見切れてしまっていますね。
 Name                                                           FullName
 ----                                                           --------
 <省略>
 TCD31B6.tmp                                                    C:\Users\sakura\AppData\Local\Temp\TCD31B6.tmp
 TCD31C7.tmp                                                    C:\Users\sakura\AppData\Local\Temp\TCD31C7.tmp
 TCD31D7.tmp                                                    C:\Users\sakura\AppData\Local\Temp\TCD31D7.tmp
 TCD31E8.tmp                                                    C:\Users\sakura\AppData\Local\Temp\TCD31E8.tmp
 <省略>

** CSVに出力する [#l378c4dc]
上記では、画面に出力できたのですが、画面幅の都合上、見切れてしまいました。~
CSV形式でファイルに出力してみます。
 > cd $ENV:TEMP
 > Get-ChildItem * | Select-Object Name, FullName, Length, LastWriteTime | Export-Csv -Encoding Default $HOME/Desktop/templist.csv
上記の例では、デスクトップに templist.csv ファイル名でCSV出力を行っています。~
以下は、上記コマンドで出力したCSVを開いた時のキャプチャーです。
#ref(01.png)
#br

** サブディレクトリも対象としたい場合 [#j5ee4775]
指定したディレクトリ内にあるディレクトリ内部も対象としたい場合は、''-Recurse'' オプションを使用すれば実現できます。
 > cd $ENV:TEMP
 > Get-ChildItem * -Recurse | Select-Object Name, FullName, Length, LastWriteTime | Export-Csv -Encoding Default $HOME/Desktop/templist.csv
上記の例でも、デスクトップに templist.csv ファイル名でCSV出力を行っています。~
以下は、上記コマンドで出力したCSVを開いた時のキャプチャーです。~
サブディレクトリ対象となっているのが確認できます。
#ref(02.png)
#br

* フォルダのみ or ファイルのみを対象としたい [#h22f8bcf]
[[ディレクトリのみ、ファイルのみの一覧を表示する方法>PowerShell/ディレクトリのみ、ファイルのみの一覧を表示する方法]]~
として既に記事がありますが、本資料でも、フォルダのみの一覧、ファイルのみの一覧を出力したい場合を以下に記します。
** ディレクトリのみ対象とする [#nc971ce9]
ディレクトリのみなので、ファイルサイズがありませんので、Lengthは省略しています。~
- カレントディレクトリのみ
 > cd $ENV:TEMP
 > Get-ChildItem * | Where-Object { $_.PSIsContainer } | Select-Object Name, FullName, LastWriteTime | Export-Csv -Encoding Default $HOME/Desktop/templist.csv
- カレントディレクトリおよび配下のサブディレクトリも含む
 > cd $ENV:TEMP
 > Get-ChildItem * -Recurse | Where-Object { $_.PSIsContainer } | Select-Object Name, FullName, LastWriteTime | Export-Csv -Encoding Default $HOME/Desktop/templist.csv

** ファイルのみ対象とする [#e0e37b82]
- カレントディレクトリのみ
 > cd $ENV:TEMP
 > Get-ChildItem * | Where-Object { ! $_.PSIsContainer } | Select-Object Name, FullName, LastWriteTime | Export-Csv -Encoding Default $HOME/Desktop/templist.csv
- カレントディレクトリおよび配下のサブディレクトリも含む
 > cd $ENV:TEMP
 > Get-ChildItem * -Recurse | Where-Object { ! $_.PSIsContainer } | Select-Object Name, FullName, LastWriteTime | Export-Csv -Encoding Default $HOME/Desktop/templist.csv

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS