2009-09-30 40 views
38

kullanarak bir desenle eşleşen ilk dosyayı bulun Bir dizinde herhangi bir ".xls" dosyasını seçmek istiyorum. Sorun, dir komutunun farklı türleri döndürebilmesidir.PowerShell

gci *.xls 

dönecektir

  • nesne [] tam olarak bir dosya varsa birden fazla dosya
  • FileInfo varsa
  • boş hiçbir dosya varsa

Null ile başa çıkabilirim, ancak "ilk" dosyayı nasıl seçerim?

cevap

76

Sen @(...) içine yalnızca bir öğe bir açıklama sararak mevcut olsa bile bir dizi dönen içine PowerShell zorlayabilirsiniz:

@(gci *.xls)[0] 

senin üç durumda her biri için çalışacaktır:

  • onu
  • dosyalarının bir koleksiyonunun ilk nesnesini döndürürse, yalnızca bir tane
  • döndürürse,değerini döndürür Oradande bulunmaktadır

başlamak herhangi bir nesne değildi -First parametre Select-Object için: listesinin dışında yukarıda hemen hemen aynıdır çalışır

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

İlk öğeden sonra boru hattı iptal edildiğinden, dosyaların tamamen Get-ChildItem numaralı numaraya göre numaralandırılmasına gerek yoktur. Bu, filtreyle eşleşen çok sayıda dosya olduğunda bir fark yaratabilir.