Get-ChildItemでファイルだけ表示させたい(-Fileオプション/PSIsContainer でフォルダ判定)
Get-ChildItemでファイルだけ表示させたい
ある雑然としたフォルダの中からファイル名だけを列挙させたい。
Get-ChildItem -Recurse を使うとフォルダ名も列挙されてしまうのでそれを除く方法を考えた。
目次
本文
1. 古い人間が考えるとこうなる
$path = "~~~" $a = Get-ChildItem -Recurse -Path $path $a | %{ if($_.PSIsContainer -ne $true){ $_.Name } }
ForEach-Object(%)の中で言えば、「$_.PSIsContainer」の部分でフォルダ判定をしている。フォルダの場合$trueになるので、-ne(not equal)で判定している。
2. 本来ならGet-ChildItemのオプションでファイルだけを取得するべき
$path = "~~~" $a = Get-ChildItem -Recurse -File -Path $path $a | %{ $_.Name }
Get-ChildItemのオプションで「-File」でファイルだけを絞り込める。逆に「-Directory」でフォルダだけを絞り込める。
バージョン情報
> $PSVersionTable Name Value ---- ----- PSVersion 5.1.19041.1023