はじめに
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