LoginSignup
2
1

More than 5 years have passed since last update.

Get-ChildItem | Export-CSV で出力されるものが変わる

Posted at

ざーっと特定ディレクトリ配下のファイルの一覧を出力してそのファイルの状態を比較しようと思った時の話

C:.
│  text1.txt
│
├─dir2
│  │  text2.txt
│  │
│  └─dir4
│          text4.txt
│
└─dir3
        text3.txt

的な状態で、

Get-ChildItem dir2 | Export-Csv dir2.csv -Encoding UTF8
Get-ChildItem dir3 | Export-Csv dir3.csv -Encoding UTF8

をやると、dir2.csvとdir3.csvの項目は異なるものが作成される。
具体的には、Get-ChildItemの最初(?)のオブジェクトの違い、
#TYPE System.IO.DirectoryInfo
#TYPE System.IO.FileInfo
の差がでるため。
プロパティの差はそんなに大きくはないのだが、ファイルにはあってディレクトリにはない Length が結構(個人的には)致命的。

エレガントなやり方ではないかもしれないが、Select-Objectを間に挟んで、

Get-ChildItem dir2 | Select-Object PSDrive, BaseName, Mode, Name, Length, DirectoryName, Directory, IsReadOnly, Exists, FullName, Extension, CreationTime, CreationTimeUtc, LastAccessTime, LastAccessTimeUtc, LastWriteTime, LastWriteTimeUtc, Attributes | Export-Csv dir2.csv -Encoding UTF8

とかやってあげる必要がありそうな気がしている。
実際にはもう少し必要なプロパティにだけ絞り込んであげればよいかな。

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1