2009-09-30 79 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枚举。当有许多文件与过滤器匹配时,这可能会有所不同。

相关问题