2009-09-30 68 views
38

我想選擇目錄中的任何一個「.xls」文件。問題是dir命令可以返回不同的類型。使用PowerShell查找與模式匹配的第一個文件

gci *.xls 

將返回

  • 對象[]如果有一個以上的文件
  • 的FileInfo如果恰好有一個文件
  • 空,如果沒有文件

我可以處理null,但我怎樣才能選擇「第一個」文件?

回答

76

您可以強制的PowerShell成返回一個數組,即使只有一個項目存在通過包裝聲明爲@(...)

@(gci *.xls)[0] 

會爲每一個你的三個情況下工作:

  • 它返回文件集合的第一個對象
  • 它返回的唯一對象,如果只有一個
  • 返回還有沒有任何物體開始與

也有-First參數Select-Object

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

其作品幾乎上述相同,除了名單因爲管道在第一個項目之後被中止,所以文件不需要完全被Get-ChildItem枚舉。當有許多文件與過濾器匹配時,這可能會有所不同。

相關問題