From c076adb13e9847bc9cc4579d37b73cffcf620a30 Mon Sep 17 00:00:00 2001 From: Tomasz Kostrzewa Date: Wed, 19 Jun 2024 00:01:01 +0200 Subject: [PATCH] new file: RozmiarBloku/RozamiarBloku.ps1 --- RozmiarBloku/RozamiarBloku.ps1 | 246 +++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 RozmiarBloku/RozamiarBloku.ps1 diff --git a/RozmiarBloku/RozamiarBloku.ps1 b/RozmiarBloku/RozamiarBloku.ps1 new file mode 100644 index 0000000..c818792 --- /dev/null +++ b/RozmiarBloku/RozamiarBloku.ps1 @@ -0,0 +1,246 @@ +# Analizator Dysku +# +param ( + [ValidatePattern("^[a-zA-Z]:\\$")] + [Parameter(Mandatory=$true, HelpMessage="Podaj literę dysku, np.: D:\")] + [string]$Litera_Dysku +) +if (-not(Test-Path $Litera_Dysku)) { + Write-Error "Dysk $Litera_Dysku nie istnieje" +} +$startdate = Get-Date +# Aktualny rozmiar bloku +$Block_Size = Get-CimInstance -ClassName Win32_Volume -Filter "DriveType = 3" | Where-Object name -eq $($Litera_Dysku) | Select-Object BlockSize -ExpandProperty BlockSize +[float]$Licznik_Folderow = 0 +[float]$Licznik_Plikow = 0 +[float]$Wielkosc_Plikow_suma = 0 +[float]$wielkosc_Plikow_suma_KB = 0 +[float]$wielkosc_Plikow_suma_MB = 0 +[float]$wielkosc_Plikow_suma_GB = 0 +$Wielkosc_Bloku = [System.Collections.Generic.List[pscustomobject]]::new() +$Wielkosc_Bloku_lista = [pscustomobject]@{ + "0,5 KB" = 0 + "1 KB" = 0 + "2 KB" = 0 + "4 KB" = 0 + "8 KB" = 0 + "16 KB" = 0 + "32 KB" = 0 + "64 KB" = 0 + "128 KB" = 0 + "256 KB" = 0 + "512 KB" = 0 + "1024 KB" = 0 + "2048 KB" = 0 + "4096 KB" = 0 + "8192 KB" = 0 + "16384 KB" = 0 + "32768 KB" = 0 + "65536 KB" = 0 + "131072 KB" = 0 + "262144 KB" = 0 + "524288 KB" = 0 + "1048576 KB" = 0 + "1 GB+" = 0 +} +$Wielkosc_Bloku.Add($Wielkosc_Bloku_lista) + +$Rozszerzenia = [System.Collections.Generic.List[pscustomobject]]::new() +$rozszerzenia_lista = [PSCustomObject]@{ + Rozszerzenie = "" + Ilosc = 0 +} +$Rozszerzenia.Add($rozszerzenia_lista) +$glebokosc_start = $true + +# Rozpoczęcie iterowania po dysku w poszukiwaniu wszystkich plików i folderów +Get-ChildItem -LiteralPath $Litera_Dysku -Recurse -Force | ForEach-Object { + # Jeżeli znaleziono folder + if ($_.PSIsContainer -eq $true) { + # Zwiększenie licznika folderów + $Licznik_Folderow++ + # Zdefiniowanie głębokości + if ($glebokosc_start -eq $true) { + $Glebokosc_folderow = (($_.FullName.Split("\").count) -1) + $glebokosc_start = $false + } else { + # Przypisanie nowej większej głębokości + if ($Glebokosc_folderow -lt (($_.FullName.Split("\").count) -1)) { + $Glebokosc_folderow = (($_.FullName.Split("\").count) -1) + } + } + # Jeżeli nie jest to folder + } else { + # Zwiększenie licznika plików + $Licznik_Plikow++ + # Zsumowanie rozmiarów plików (2 miejsca po przecinku) + [float]$Wielkosc_Plikow_suma = [Math]::Round(($Wielkosc_Plikow_suma + [int]$_.Length), 2) + [float]$wielkosc_Plikow_suma_KB = [Math]::Round(($Wielkosc_Plikow_suma / 1KB), 2) + [float]$wielkosc_Plikow_suma_MB = [Math]::Round(($wielkosc_Plikow_suma / 1MB), 2) + [float]$wielkosc_Plikow_suma_GB = [Math]::Round(($wielkosc_Plikow_suma / 1GB), 2) + # Przypisanie pliku do grupy na podstawie rozmiaru bloku + $length = $_.Length + switch ($length) { + { ($length -le 512) } + { + $Wielkosc_Bloku[0]."0,5 KB" = $Wielkosc_Bloku[0]."0,5 KB" + 1 + } + { ($length -gt 512) -and ($length -le 1024) } + { + $Wielkosc_Bloku[0]."1 KB" = $Wielkosc_Bloku[0]."1 KB" + 1 + } + { ($length -gt 1024) -and ($length -le 2048) } + { + $Wielkosc_Bloku[0]."2 KB" = $Wielkosc_Bloku[0]."2 KB" + 1 + } + { ($length -gt 2048) -and ($length -le 4096) } + { + $Wielkosc_Bloku[0]."4 KB" = $Wielkosc_Bloku[0]."4 KB" + 1 + } + { ($length -gt 4096) -and ($length -le 8192) } + { + $Wielkosc_Bloku[0]."8 KB" = $Wielkosc_Bloku[0]."8 KB" + 1 + } + { ($length -gt 8192) -and ($length -le 16384) } + { + $Wielkosc_Bloku[0]."16 KB" = $Wielkosc_Bloku[0]."16 KB" + 1 + } + { ($length -gt 16384) -and ($length -le 32768) } + { + $Wielkosc_Bloku[0]."32 KB" = $Wielkosc_Bloku[0]."32 KB" + 1 + } + { ($length -gt 32768) -and ($length -le 63488) } + { + $Wielkosc_Bloku[0]."64 KB" = $Wielkosc_Bloku[0]."64 KB" + 1 + } + { ($length -gt 63488) -and ($length -le 131072) } + { + $Wielkosc_Bloku[0]."128 KB" = $Wielkosc_Bloku[0]."128 KB" + 1 + } + { ($length -gt 131072) -and ($length -le 262144) } + { + $Wielkosc_Bloku[0]."256 KB" = $Wielkosc_Bloku[0]."256 KB" + 1 + } + { ($length -gt 262144) -and ($length -le 524288) } + { + $Wielkosc_Bloku[0]."512 KB" = $Wielkosc_Bloku[0]."512 KB" + 1 + } + { ($length -gt 524288) -and ($length -le 1048576) } + { + $Wielkosc_Bloku[0]."1024 KB" = $Wielkosc_Bloku[0]."1024 KB" + 1 + } + { ($length -gt 1048576) -and ($length -le 2097152) } + { + $Wielkosc_Bloku[0]."2048 KB" = $Wielkosc_Bloku[0]."2048 KB" + 1 + } + { ($length -gt 2097152) -and ($length -le 4194304) } + { + $Wielkosc_Bloku[0]."4096 KB" = $Wielkosc_Bloku[0]."4096 KB" + 1 + } + { ($length -gt 4194304) -and ($length -le 8388608) } + { + $Wielkosc_Bloku[0]."8192 KB" = $Wielkosc_Bloku[0]."8192 KB" + 1 + } + { ($length -gt 8388608) -and ($length -le 16777216) } + { + $Wielkosc_Bloku[0]."16384 KB" = $Wielkosc_Bloku[0]."16384 KB" + 1 + } + { ($length -gt 16777216) -and ($length -le 33554432) } + { + $Wielkosc_Bloku[0]."32768 KB" = $Wielkosc_Bloku[0]."32768 KB" + 1 + } + { ($length -gt 33554432) -and ($length -le 67108864) } + { + $Wielkosc_Bloku[0]."65536 KB" = $Wielkosc_Bloku[0]."65536 KB" + 1 + } + { ($length -gt 67108864) -and ($length -le 134217728) } + { + $Wielkosc_Bloku[0]."131072 KB" = $Wielkosc_Bloku[0]."131072 KB" + 1 + } + { ($length -gt 134217728) -and ($length -le 268435456) } + { + $Wielkosc_Bloku[0]."262144 KB" = $Wielkosc_Bloku[0]."262144 KB" + 1 + } + { ($length -gt 268435456) -and ($length -le 536870912) } + { + $Wielkosc_Bloku[0]."524288 KB" = $Wielkosc_Bloku[0]."524288 KB" + 1 + } + { ($length -gt 536870912) -and ($length -le 1073741824) } + { + $Wielkosc_Bloku[0]."1048576 KB" = $Wielkosc_Bloku[0]."1048576 KB" + 1 + } + default { + $Wielkosc_Bloku[0]."1 GB+" = $Wielkosc_Bloku[0]."1 GB+" + 1 + } + } + if ($Rozszerzenia.Rozszerzenie -contains $_.Extension) { + $ext = $_.Extension + $extension = $Rozszerzenia | Where-Object { $_.Rozszerzenie -eq $ext } + if ($extension) { + $index = $Rozszerzenia.IndexOf($extension) + $Rozszerzenia[$index].Ilosc = $Rozszerzenia[$index].Ilosc + 1 + } + } else { + $rozszerzenia_lista = [PSCustomObject]@{ + Rozszerzenie = $_.Extension + Ilosc = 1 + } + $Rozszerzenia.Add($rozszerzenia_lista) + } + } +} +$enddate = Get-Date +Clear-Host +"" +Start-Sleep 1 +Write-Host "Skrypt wystartował o: " -NoNewline +Write-Host "$startdate" -ForegroundColor Green +Write-Host "Skrypt zatrzymał się o: " -NoNewline +Write-Host "$enddate" -ForegroundColor Green +Write-Host "Skrypt trwał: " -NoNewline +Write-Host "$($enddate - $startdate)" -ForegroundColor Green +"" +Start-Sleep 1 +Write-Host "Przeskanowano " -NoNewline +Write-Host "$Licznik_Plikow" -NoNewline -ForegroundColor Green +Write-Host " plików i " -NoNewline +Write-Host "$Licznik_Folderow" -NoNewline -ForegroundColor Green +Write-Host " folderów gdzie najgłębsze zagnieżdżenie wynosi " -NoNewline +Write-Host "$Glebokosc_folderow" -ForegroundColor Green -NoNewline +Write-host "." +Start-Sleep 1 +Write-Host "Znaleziono " -NoNewline +Write-host "$($Rozszerzenia.Count)" -ForegroundColor Green -NoNewline +Write-Host "unikalnych rodzajów plików które dzielą się następująco:" +$Rozszerzenia = $rozszerzenia | Sort-Object Ilosc +for ($i = 0; $i -lt $Rozszerzenia.Count; $i++) { + Write-Host "Znaleziono " -NoNewline + Write-Host "$($Rozszerzenia[$i].Ilosc)" -ForegroundColor Green -NoNewline + Write-Host " plików o rozszerzeniu " -NoNewline + Write-Host "$($Rozszerzenia[$i].Rozszerzenie)" -ForegroundColor Green +} +"" +Start-Sleep 1 +Write-Host "Aktualny rozmiar bloku to: " -NoNewline +Write-Host $Block_Size -ForegroundColor Green +Write-Host "Gdzie suma rozmiarów plików w B to: " -NoNewline +Write-host "$($Wielkosc_Plikow_suma)" -ForegroundColor Green +Write-Host "Gdzie średni rozmiar pliku w B to: " -NoNewline +Write-host "$($Wielkosc_Plikow_suma / $Licznik_Plikow)" -ForegroundColor Green +Write-Host "Gdzie suma rozmiarów plików w KB to: " -NoNewline +Write-host "$($Wielkosc_Plikow_suma_KB)" -ForegroundColor Green +Write-Host "Gdzie średni rozmiar pliku w KB to: " -NoNewline +Write-host "$($wielkosc_Plikow_suma_KB / $Licznik_Plikow)" -ForegroundColor Green +Write-Host "Gdzie suma rozmiarów plików w MB to: " -NoNewline +Write-host "$($Wielkosc_Plikow_suma_MB)" -ForegroundColor Green +Write-Host "Gdzie średni rozmiar pliku w MB to: " -NoNewline +Write-host "$($wielkosc_Plikow_suma_MB / $Licznik_Plikow)" -ForegroundColor Green +Write-Host "Gdzie suma rozmiarów plików w GB to: " -NoNewline +Write-host "$($Wielkosc_Plikow_suma_GB)" -ForegroundColor Green +Write-Host "Gdzie średni rozmiar pliku w GB to: " -NoNewline +Write-host "$($wielkosc_Plikow_suma_GB / $Licznik_Plikow)" -ForegroundColor Green +Write-Host "Znalezione pliki można przypisać do następujących bloków: " +$wielkosc_bloku +Start-Sleep 1 +$wielkosc_bloku | Export-Csv -Path "$($env:userprofile)\wielkosc_bloku.csv" -NoTypeInformation -Force +Write-Host "Plik wielkosc_bloku.csv zapisano w w lokalizacji $($env:userprofile)" \ No newline at end of file