2009-09-30 8 views
38

ディレクトリ内の任意の1つの ".xls"ファイルを選択したいと思います。問題はdirコマンドが異なるタイプを返すことができることです。PowerShellを使用してパターンに一致する最初のファイルを検索します

gci *.xls 

戻ります

  • オブジェクト[]正確に一つのファイルがある場合は、複数のファイル
  • のFileInfoがある場合
  • ヌル何のファイルが存在しない場合

私はnullを処理することができますが、私はどのように "最初の"ファイルを選択するだけですか?

答えて

76

あなたは@(...)に一つだけのアイテムがステートメントをラップすることにより、存在する場合でも、配列を返すにPowerShellを強制することができます。

@(gci *.xls)[0] 

は、あなたの3例それぞれのために動作します:

  • それを
  • 1つしかない場合は唯一のオブジェクトを返します
  • これはを返しますそこのもあり

で開始する任意のオブジェクトではありませんでした-FirstパラメータSelect-Objectへ:リストことを除いて、上記とほとんど同じ働き

Get-ChildItem -Filter *.xls | Select-Object -First 1 
gci -fi *.xls | select -f 1 

最初の項目の後にパイプラインが打ち切られるので、ファイルは完全にGet-ChildItemで列挙する必要はありません。これは、フィルタに一致するファイルが多数ある場合に違いがあります。

関連する問題