2010-08-31 8 views

Antwort

15
Get-ChildItem | ForEach-Object { <# do what you need to do #> } 

oder kürzer:

gci | % { <# ... #> } 

oder wenn Sie eine explizite Schleifenkonstrukt wollen:

foreach ($file in Get-ChildItem) { 
    # ... 
} 

ist jedoch zu beachten, dass foreach nur ausgeführt werden, wenn alle Ausgaben von Get-ChildItem gesammelt. Meiner Meinung nach sollte der meiste Powershell-Code die Pipeline so gut wie möglich verwenden.

+0

Wenn Sie eine große Anzahl von Dateien haben, [System.IO.Directory] :: EnumerateFiles. Es erfordert .NET 4+. Aber es wartet nicht, bis es über alle Dateien iteriert. Was ist ein Problem, wenn Sie Tausende in einem Verzeichnis haben. https://stackoverflow.com/questions/14970692/powershell-io-directory-find-file-types-in-all-subdirectories – TamusJRoyce

+0

@TamusJRoyce: Get-ChildItem sollte auch streamen. Im Gegensatz zu Directory.GetFiles natürlich, die ein Array zurückgibt. – Joey