このエントリーをはてなブックマークに追加


PowerShellでファイル一覧を取得し各ファイルの情報をCSV化する方法

任意のフォルダ(ディレクトリ)のファイル一覧、更新日、ファイルサイズなどを取得し
CSV化して使用したい場合など本資料が役に立つと思います。


関連記事

動作確認環境

PS C:\> (Get-WmiObject Win32_OperatingSystem).Caption
Microsoft Windows 10 Pro
PS C:\> ($PSVersionTable).PSVersion.toString()
5.1.17134.228

ファイル名, フルパス名, ファイルサイズ, 更新日付 を取得

以下のスクリプト例は、テンポラリーフォルダ($ENV:TEMP)を対象にして実行してみます。

テンポラリーフォルダのファイル一覧を取得する

> 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に出力する

上記では、画面に出力できたのですが、画面幅の都合上、見切れてしまいました。
CSV形式でファイルに出力してみます。

> cd $ENV:TEMP
> Get-ChildItem * | Select-Object Name, FullName, Length, LastWriteTime | Export-Csv -Encoding Default $HOME/Desktop/templist.csv

上記の例では、デスクトップに templist.csv ファイル名でCSV出力を行っています。
以下は、上記コマンドで出力したCSVを開いた時のキャプチャーです。

01.png
 

サブディレクトリも対象としたい場合

指定したディレクトリ内にあるディレクトリ内部も対象としたい場合は、-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を開いた時のキャプチャーです。
サブディレクトリ対象となっているのが確認できます。

02.png
 

フォルダのみ or ファイルのみを対象としたい

ディレクトリのみ、ファイルのみの一覧を表示する方法
として既に記事がありますが、本資料でも、フォルダのみの一覧、ファイルのみの一覧を出力したい場合を以下に記します。

ディレクトリのみ対象とする

ディレクトリのみなので、ファイルサイズがありませんので、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

ファイルのみ対象とする

  • カレントディレクトリのみ
    > 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


添付ファイル: file01.png 2053件 [詳細] file02.png 854件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-28 (日) 14:03:28