Powershell Dateilistenabfrage beschleunigen
Hallo,
ich habe 50000 Testdateien in einem Ordner und wollte die in eine Textdatei mit der Dateigröße ausgeben.
Das Funktioniert auch, nur geht es mir zu langsam..
Dauer: 52s
Dauer: 59s
Das der zweite Befehl langsamer ist, hat mich überrascht. Hat jemand eine bessere Lösung?
Danke.
ich habe 50000 Testdateien in einem Ordner und wollte die in eine Textdatei mit der Dateigröße ausgeben.
Das Funktioniert auch, nur geht es mir zu langsam..
measure-command{@([System.IO.Directory]::GetFiles("C:\test\files","*","AllDirectories")) |
Foreach-Object{(Get-Item $_ |Select -ExpandProperty fullname) + "," + (Get-Item $_ |Select -ExpandProperty length)} |
Out-File -FilePath C:\test\result.txt}
measure-command{(Get-ChildItem C:\test\files -Recurse)| %{
$_.Fullname + "," + $_.length | Out-File -FilePath C:\test\result2.txt
}
}
Das der zweite Befehl langsamer ist, hat mich überrascht. Hat jemand eine bessere Lösung?
Danke.
Please also mark the comments that contributed to the solution of the article
Content-Key: 293649
Url: https://administrator.de/contentid/293649
Printed on: May 4, 2024 at 07:05 o'clock
3 Comments
Latest comment
Ay,
ob es hilft, weiß ich nicht - aber zu deiner Variante 1 hier ein paar Anmerkungen:
http://www.admin-source.de/BlogDeu/905/powershell-foreach-und-foreach-o ...
Gruß
Ankh
ob es hilft, weiß ich nicht - aber zu deiner Variante 1 hier ein paar Anmerkungen:
http://www.admin-source.de/BlogDeu/905/powershell-foreach-und-foreach-o ...
Gruß
Ankh
Hiermit braucht es im Test nur knapp 10 Sekunden bei 50.000 Dateien (in VM mit vhd auf einer SSD):
Das ist effizienter als innerhalb der Schleife jedes mal den Output erneut wegzuschreiben.
Gruß jodel32
gci c:\test\files -recurse | %{"$($_.Fullname) - $($_.Length)"} | set-content 'C:\test\result.txt'
Gruß jodel32