特定のフォルダ配下のサブフォルダやファイルをリスト化する

スポンサーリンク

はじめに

C:\tempフォルダ配下のサブフォルダやファイルをリスト化します。表示項目は以下の通り。

  • ファイル名(フォルダ名)
  • フルパス
  • サイズ
  • 最終更新日

CSVファイルとしてデスクトップ上に保存します。

環境

OS:Windows10
.Net Framework:4.7
PowerShellのバージョン:5.1.17763.1007

ソースコード

 Get-ChildItem c:\temp -Recurse | Select Name, FullName, Length, LastWriteTime | Export-Csv -NoTypeInformation -Encoding Default $HOME/Desktop/templist.csv

動作確認

デスクトップ上に「templist.csv」ファイルが作成されます。ファイルの中身は以下の通りです。

Name           FullName                       Length   LastWriteTime
----           --------                       ------   -------------
Folder1        C:\temp\Folder1                         2020/11/08 17:41:37
Folder2        C:\temp\Folder2                         2020/11/08 18:01:07
Folder3        C:\temp\Folder3                         2020/11/08 17:44:41
test1.txt      C:\temp\Folder1\test1.txt      765000   2020/11/08 17:41:57
test2.txt      C:\temp\Folder1\test2.txt      204000   2020/11/08 17:42:10
test3.txt      C:\temp\Folder1\test3.txt      21012000 2020/11/08 17:42:28
Word 文書.docx C:\temp\Folder2\Word 文書.docx 31775    2020/11/08 17:42:56
Photo-1.png    C:\temp\Folder3\Photo-1.png    2504833  2020/11/08 17:44:02
Photo-2.png    C:\temp\Folder3\Photo-2.png    2504833  2020/11/08 17:44:02
Photo-3.png    C:\temp\Folder3\Photo-3.png    2504833  2020/11/08 17:44:02
Photo-4.png    C:\temp\Folder3\Photo-4.png    2504833  2020/11/08 17:44:02
Photo-5.png    C:\temp\Folder3\Photo-5.png    2504833  2020/11/08 17:44:02
Photo-6.png    C:\temp\Folder3\Photo-6.png    2504833  2020/11/08 17:44:02
Photo-7.png    C:\temp\Folder3\Photo-7.png    2504833  2020/11/08 17:44:02
Photo-8.png    C:\temp\Folder3\Photo-8.png    2504833  2020/11/08 17:44:02
Photo-9.png    C:\temp\Folder3\Photo-9.png    2504833  2020/11/08 17:44:02

補足

サイズがバイトで表示されるのでちょっとわかりにくいですね。ファイルサイズの単位をKBにします。ついでにラベルも変更します。

PS C:\temp> Get-ChildItem c:\temp -Recurse | Select-Object Name, FullName, @{Label="Size(KB)";Expression={($_.length/1KB)}}, LastWriteTime                                                                                                      
Name      FullName               Size(KB) LastWriteTime
----      --------               -------- -------------
Photo.png C:\temp\Photo.png 487.326171875 2022/01/02 23:02:07
test.txt  C:\temp\test.txt   0.0009765625 2022/02/27 13:27:35
Work.csv  C:\temp\Work.csv   17042.109375 2021/10/30 21:27:23

KBでも桁数が多いと非常にわかりにくいです。少数以下は表示しないようにします。ただ、test.txtは0KBになってしまうので1024B以下の場合は1KBで表示するようにします。

PS C:\temp> Get-ChildItem c:\temp -Recurse | Select-Object Name, FullName, @{Label="Size(KB)";Expression={if($_.length -lt 1024){"1"}else{"{0:N0}" -f ($_.length/1kb)}}}, LastWriteTime
Name      FullName          Size(KB) LastWriteTime
----      --------          -------- -------------
Photo.png C:\temp\Photo.png 487      2022/01/02 23:02:07
test.txt  C:\temp\test.txt  1        2022/02/27 13:27:35
Work.csv  C:\temp\Work.csv  17,042   2021/10/30 21:27:23

ファイルサイズが左寄せになっています。右寄せにしておきます。alignディレクティブは、Format-Tableコマンドレットのハッシュテーブルとして指定する必要があります。

PS C:\temp> Get-ChildItem c:\temp -Recurse | ft Name, FullName, @{Label="Size(KB)";Expression={if($_.length -lt 1024){"1"}else{"{0:N0}" -f ($_.length/1KB)}};a="r"},LastWriteTime
Name      FullName          Size(KB) LastWriteTime
----      --------          -------- -------------
Photo.png C:\temp\Photo.png      487 2022/01/02 23:02:07
test.txt  C:\temp\test.txt         1 2022/02/27 13:27:35
Work.csv  C:\temp\Work.csv    17,042 2021/10/30 21:27:23