2009-09-30 10 views
38

Chciałbym wybrać dowolny plik ".xls" w katalogu. Problem polega na tym, że komenda dir może zwracać różne typy.Znajdź pierwszy plik pasujący do wzorca przy użyciu PowerShell

gci *.xls 

powróci

  • Object [], jeśli istnieje więcej niż jeden plik
  • FileInfo jeśli istnieje dokładnie jeden plik
  • null, jeśli nie ma żadnych plików

Mogę sobie radzić z wartością null, ale jak mogę wybrać "pierwszy" plik?

Odpowiedz

76

Można wymusić PowerShell w powrocie tablicę, nawet wtedy, gdy tylko jeden element jest obecny przez owinięcie oświadczenie do @(...):

@(gci *.xls)[0] 

będzie działać na każdym z trzech przypadków:

  • go zwraca pierwszy obiekt zbioru plików
  • zwraca jedyny obiekt, jeśli jest tylko jeden
  • wraca $null tam nie było żadnego obiektu zacząć

Istnieje również -First parametrem Select-Object:

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

która działa prawie identyczny z powyższym, oprócz tego, że na liście pliki nie muszą być wyliczane całkowicie przez Get-ChildItem, ponieważ potok jest przerywany po pierwszym elemencie. Może to mieć znaczenie, gdy istnieje wiele plików pasujących do filtra.

Powiązane problemy