Yeni başlayanlar için bir PowerShell kursu alıyorum ve eğitmen yardım istediğinde tamamen işe yaramaz. Yapmaya çalıştığım görev: .doc, .docx, .xls veya .xlsx dosya uzantısıyla biten dosyalar için bilgisayarımı ara. Dosya adlarını ve boyutlarını (dosya uzantısına göre gruplar halinde) “File_Summary.txt” adlı bir metin dosyasına kaydedin. Ayrıca çıktı, her dosya uzantısı için toplam dosya sayısı ve toplam dosya boyutu ile sonuçlandırılmalıdır. Şu ana kadar yarattığım kod:Her Uzantı için Toplam Dosya Boyutuna Sahip Powershell Count Dosya Uzantıları
$path = ".\"
$destination = "C:\Users\StayPositibve\Desktop\pleasework1.txt"
$results = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"} | Select-Object Name, Extension, @{Name="Kbytes";Expression={ "{0:N0}" -f ($_.Length/1Kb) }}
$results | Sort-Object -Property extension | Out-File $destination
$countFiles = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"}
$countFiles | Group-Object -Property extension | Out-File $destination -Append
Kod çalışır (her ne kadar emin bir şekilde kodlanmış olsa da eminim); Ancak, her uzantı için toplam dosya boyutunu nasıl ekleyeceğimi anlayamıyorum. Her uzantı için toplam dosya sayısına sahibim, ancak toplam boyut değil. Herkesin bana verebileceği herhangi bir yardım için teşekkürler!
Döngü içermeyen düzgün bir seçeneğiniz olduğunu düşünmüyorum; Düşünebildiğim en temiz 'Group-Object -Property Extension' kullanmak ve bir değişkenin içinde saklamak, daha sonra '$ store | ForEach {$ _. Name; $ _. Ölçü-Nesne -Suma -Merdiven Uzunluğu | -ExpandProperty Sum} 'i seçin ve bunun ne yaptığını görün ve bunu dosyaya eklemek için kullanın. (Temel Get-ChildItem çağrısının sonuçlarını, herhangi bir şey yapmadan önce ilk kez saklamanızı öneririm, daha sonra sonuçları yeniden kullanabilir ve dosya sayımı için tekrar arama yapmasını beklemeniz gerekmez). – TessellatingHeckler