βοΈ ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ β Π»ΠΈΡΡ ΠΌΠ°Π»Π°Ρ ΡΠ°ΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π² Windows. ΠΠ° ΠΊΠ°Π½Π°Π»Π΅ "ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Windows" ΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°ΡΠΎΠ²ΡΡ ΡΡΡΠΈΠ½Ρ Π² ΠΏΠ°ΡΡ ΠΊΠ»ΠΈΠΊΠΎΠ². π‘οΈ ΠΠΠΠΠ‘ Π Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠΠΠ Π Π‘ΠΠΠΠΠΠΠ ΠΠΠΠΠΠΠ«Π₯ Π‘ΠΠ ΠΠΠ’ΠΠ π‘οΈ # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# οΈ PROFESSIONAL TEMP CLEANER v3.0 β ΠΠΠ’ΠΠ ΠΠΠ’ΠΠΠΠ«Π
# Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ: Windows 10 (1903+) / Windows 11 (Π²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ)
# PowerShell: 5.1+ / 7.x
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# ΠΠΠ’ΠΠΠΠ’ΠΠ§ΠΠ‘ΠΠΠ ΠΠΠΠ ΠΠ‘ ΠΠ ΠΠ ΠΠΠΠΠΠΠ‘Π’Π ΠΠ’ΠΠ Π
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Host "β οΈ Π’ΡΠ΅Π±ΡΡΡΡΡ ΠΏΡΠ°Π²Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°. ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ..." -ForegroundColor Yellow
Write-
βοΈ ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ β Π»ΠΈΡΡ ΠΌΠ°Π»Π°Ρ ΡΠ°ΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π² Windows. ΠΠ° ΠΊΠ°Π½Π°Π»Π΅ "ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Windows" ΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°ΡΠΎΠ²ΡΡ ΡΡΡΠΈΠ½Ρ Π² ΠΏΠ°ΡΡ ΠΊΠ»ΠΈΠΊΠΎΠ². π‘οΈ ΠΠΠΠΠ‘ Π Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠΠΠ Π Π‘ΠΠΠΠΠΠΠ ΠΠΠΠΠΠΠ«Π₯ Π‘ΠΠ ΠΠΠ’ΠΠ π‘οΈ # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# οΈ PROFESSIONAL TEMP CLEANER v3.0 β ΠΠΠ’ΠΠ ΠΠΠ’ΠΠΠΠ«Π
# Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ: Windows 10 (1903+) / Windows 11 (Π²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ)
# PowerShell: 5.1+ / 7.x
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# ΠΠΠ’ΠΠΠΠ’ΠΠ§ΠΠ‘ΠΠΠ ΠΠΠΠ ΠΠ‘ ΠΠ ΠΠ ΠΠΠΠΠΠΠ‘Π’Π ΠΠ’ΠΠ Π
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Host "β οΈ Π’ΡΠ΅Π±ΡΡΡΡΡ ΠΏΡΠ°Π²Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°. ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ..." -ForegroundColor Yellow
Write-
...Π§ΠΈΡΠ°ΡΡ Π΄Π°Π»Π΅Π΅
βοΈ ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ β Π»ΠΈΡΡ ΠΌΠ°Π»Π°Ρ ΡΠ°ΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π² Windows. ΠΠ° ΠΊΠ°Π½Π°Π»Π΅ "ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Windows" ΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°ΡΠΎΠ²ΡΡ ΡΡΡΠΈΠ½Ρ Π² ΠΏΠ°ΡΡ ΠΊΠ»ΠΈΠΊΠΎΠ².
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# οΈ PROFESSIONAL TEMP CLEANER v3.0 β ΠΠΠ’ΠΠ ΠΠΠ’ΠΠΠΠ«Π
# Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ: Windows 10 (1903+) / Windows 11 (Π²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ)
# PowerShell: 5.1+ / 7.x
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# ΠΠΠ’ΠΠΠΠ’ΠΠ§ΠΠ‘ΠΠΠ ΠΠΠΠ ΠΠ‘ ΠΠ ΠΠ ΠΠΠΠΠΠΠ‘Π’Π ΠΠ’ΠΠ Π
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Host "β οΈ Π’ΡΠ΅Π±ΡΡΡΡΡ ΠΏΡΠ°Π²Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°. ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ..." -ForegroundColor Yellow
Write-Host ""
$scriptPath = $MyInvocation.MyCommand.Path
if ($scriptPath) {
Start-Process powershell -Verb RunAs -ArgumentList "-ExecutionPolicy Bypass -File `"$scriptPath`""
exit
} else {
# ΠΡΠ»ΠΈ ΡΠΊΡΠΈΠΏΡ Π·Π°ΠΏΡΡΠ΅Π½ ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ (Π½Π΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π°)
Write-Host " Π‘ΠΊΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ½ Π² ΡΠ°ΠΉΠ» Π΄Π»Ρ Π°Π²ΡΠΎΠ·Π°ΠΏΡΠΎΡΠ° ΠΏΡΠ°Π²." -ForegroundColor Red
Write-Host "π‘ ΠΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ PowerShell ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π²ΡΡΡΠ½ΡΡ." -ForegroundColor Yellow
Write-Host ""
Write-Host "ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π»ΡΠ±ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π°..." -ForegroundColor DarkGray
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
exit
}
}
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Π€Π£ΠΠΠ¦ΠΠ
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
function Get-FolderSize {
param([string]$Path)
if (Test-Path $Path) {
$size = (Get-ChildItem -Path $Path -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum
return [math]::Round($size / 1MB, 2)
}
return 0
}
function Format-Size {
param([double]$MB)
if ($MB -ge 1024) {
return "$([math]::Round($MB / 1024, 2)) GB"
}
return "$MB MB"
}
function Show-Menu {
Write-Host ""
Write-Host "ββββββββββββββββββββββββββββββββββββββββββββββββββββββ" -ForegroundColor Cyan
Write-Host "β ποΈ PROFESSIONAL TEMP CLEANER v3.0 β" -ForegroundColor Cyan
Write-Host "ββββββββββββββββββββββββββββββββββββββββββββββββββββββ" -ForegroundColor Cyan
Write-Host ""
Write-Host " [1] π§Ή Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° (Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ)" -ForegroundColor White
Write-Host " [2] ΠΠ°ΠΊΡΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈ ΠΎΡΠΈΡΡΠΈΡΡ" -ForegroundColor Yellow
Write-Host " [3] π₯ ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° (Π·Π°ΠΊΡΡΡΡ Π²ΡΡ ΠΊΡΠΎΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ )" -ForegroundColor Red
Write-Host " [4] βΉοΈ ΠΠΎΠΊΠ°Π·Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Temp-ΠΏΠ°ΠΏΠΊΠ°Ρ " -ForegroundColor Cyan
Write-Host " [5] πͺ ΠΡΡ ΠΎΠ΄" -ForegroundColor Gray
Write-Host ""
Write-Host "ββββββββββββββββββββββββββββββββββββββββββββββββββββββ" -ForegroundColor DarkGray
Write-Host ""
}
function Get-BlockingProcesses {
$knownProcesses = @(
@{Name = "chrome"; DisplayName = "Google Chrome"},
@{Name = "msedge"; DisplayName = "Microsoft Edge"},
@{Name = "firefox"; DisplayName = "Mozilla Firefox"},
@{Name = "brave"; DisplayName = "Brave Browser"},
@{Name = "opera"; DisplayName = "Opera"},
@{Name = "vivaldi"; DisplayName = "Vivaldi"},
@{Name = "iexplore"; DisplayName = "Internet Explorer"},
@{Name = "msiexec"; DisplayName = "Windows Installer"},
@{Name = "setup"; DisplayName = "Setup/Installers"},
@{Name = "winword"; DisplayName = "Microsoft Word"},
@{Name = "excel"; DisplayName = "Microsoft Excel"},
@{Name = "powerpnt"; DisplayName = "Microsoft PowerPoint"},
@{Name = "outlook"; DisplayName = "Microsoft Outlook"},
@{Name = "teams"; DisplayName = "Microsoft Teams"},
@{Name = "slack"; DisplayName = "Slack"},
@{Name = "discord"; DisplayName = "Discord"},
@{Name = "spotify"; DisplayName = "Spotify"},
@{Name = "steam"; DisplayName = "Steam"},
@{Name = "epicgameslauncher"; DisplayName = "Epic Games Launcher"},
@{Name = "origin"; DisplayName = "Origin/EA App"},
@{Name = "updater"; DisplayName = "Various Updaters"},
@{Name = "java"; DisplayName = "Java"},
@{Name = "javaw"; DisplayName = "Java (GUI)"},
@{Name = "python"; DisplayName = "Python"},
@{Name = "node"; DisplayName = "Node.js"},
@{Name = "code"; DisplayName = "Visual Studio Code"},
@{Name = "devenv"; DisplayName = "Visual Studio"}
)
$blocking = @()
foreach ($proc in $knownProcesses) {
$running = Get-Process -Name $proc.Name -ErrorAction SilentlyContinue
if ($running) {
$blocking += @{
ProcessName = $proc.Name
DisplayName = $proc.DisplayName
Count = $running.Count
Processes = $running
}
}
}
return $blocking
}
function Stop-ProcessesInteractive {
param([array]$Processes, [string]$Mode)
if ($Processes.Count -eq 0) {
Write-Host "β ΠΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΈΡ" -ForegroundColor Green
return
}
Write-Host ""
Write-Host "π ΠΠ°ΠΉΠ΄Π΅Π½Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Temp-ΡΠ°ΠΉΠ»Ρ:" -ForegroundColor Yellow
Write-Host ""
$index = 1
foreach ($proc in $Processes) {
Write-Host " [$index] $($proc.DisplayName) ($($proc.ProcessName)) β $($proc.Count) ΡΠΊΠ·." -ForegroundColor White
$index++
}
Write-Host ""
if ($Mode -eq "selective") {
Write-Host "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΈΡ (ΠΈΠ»ΠΈ 'all' Π΄Π»Ρ Π²ΡΠ΅Ρ , 'skip' Π΄Π»Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°): " -ForegroundColor Cyan -NoNewline
$choice = Read-Host
if ($choice -eq "skip") {
Write-Host "βοΈ ΠΡΠΎΠΏΡΡΠΊ Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²" -ForegroundColor Yellow
return
}
$toStop = @()
if ($choice -eq "all") {
$toStop = $Processes
} else {
$indices = $choice -split "," | ForEach-Object { [int]($_.Trim()) }
foreach ($idx in $indices) {
if ($idx -ge 1 -and $idx -le $Processes.Count) {
$toStop += $Processes[$idx - 1]
}
}
}
foreach ($proc in $toStop) {
Write-Host "οΈ ΠΠ°ΠΊΡΡΠ²Π°Ρ $($proc.DisplayName)..." -ForegroundColor Yellow
$proc.Processes | Stop-Process -Force -ErrorAction SilentlyContinue
Start-Sleep -Milliseconds 500
}
} elseif ($Mode -eq "force") {
Write-Host "β‘ ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°ΠΊΡΡΡΠΈΠ΅ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²..." -ForegroundColor Red
foreach ($proc in $Processes) {
Write-Host "βΉοΈ ΠΠ°ΠΊΡΡΠ²Π°Ρ $($proc.DisplayName)..." -ForegroundColor Yellow
$proc.Processes | Stop-Process -Force -ErrorAction SilentlyContinue
Start-Sleep -Milliseconds 300
}
}
Write-Host "β ΠΡΠΎΡΠ΅ΡΡΡ Π·Π°ΠΊΡΡΡΡ" -ForegroundColor Green
Start-Sleep -Seconds 1
}
function Clear-TempFiles {
param([string]$Mode)
$tempPaths = @(
@{Path = $env:TEMP; Name = "ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Temp"},
@{Path = "$env:LOCALAPPDATA\Temp"; Name = "Local AppData Temp"},
@{Path = "$env:windir\Temp"; Name = "Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Temp (Windows)"}
)
Write-Host ""
Write-Host "ββββββββββββββββββββββββββββββββββββββββββββββββββββββ" -ForegroundColor DarkGray
Write-Host "π Π‘Π’ΠΠ’ΠΠ‘Π’ΠΠΠ ΠΠ ΠΠ§ΠΠ‘Π’ΠΠ:" -ForegroundColor Cyan
Write-Host "ββββββββββββββββββββββββββββββββββββββββββββββββββββββ" -ForegroundColor DarkGray
Write-Host ""
$totalBefore = 0
foreach ($temp in $tempPaths) {
$size = Get-FolderSize -Path $temp.Path
$totalBefore += $size
$status = if (Test-Path $temp.Path) { "β ΠΠ°ΠΉΠ΄Π΅Π½Π°" } else { "β ΠΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π°" }
Write-Host " $($temp.Name):" -ForegroundColor White
Write-Host " ΠΡΡΡ: $($temp.Path)" -ForegroundColor Gray
Write-Host " Π Π°Π·ΠΌΠ΅Ρ: $(Format-Size $size)" -ForegroundColor Yellow
Write-Host " Π‘ΡΠ°ΡΡΡ: $status" -ForegroundColor Green
Write-Host ""
}
Write-Host "π ΠΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Temp-ΡΠ°ΠΉΠ»ΠΎΠ²: $(Format-Size $totalBefore)" -ForegroundColor Magenta
Write-Host ""
# ΠΠ°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠ°
if ($Mode -eq "standard") {
Write-Host "π§Ή Π Π΅ΠΆΠΈΠΌ: Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° (Π±Π΅Π· Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²)" -ForegroundColor Green
} elseif ($Mode -eq "selective") {
Write-Host " Π Π΅ΠΆΠΈΠΌ: ΠΠ°ΠΊΡΡΡΠΈΠ΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²" -ForegroundColor Yellow
$blocking = Get-BlockingProcesses
Stop-ProcessesInteractive -Processes $blocking -Mode "selective"
} elseif ($Mode -eq "force") {
Write-Host " Π Π΅ΠΆΠΈΠΌ: ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ°" -ForegroundColor Red
$blocking = Get-BlockingProcesses
Stop-ProcessesInteractive -Processes $blocking -Mode "force"
}
Write-Host ""
Write-Host "π ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΎΡΠΈΡΡΠΊΡ..." -ForegroundColor Green
Write-Host "ββββββββββββββββββββββββββββββββββββββββββββββββββββββ" -ForegroundColor DarkGray
Write-Host ""
$totalDeleted = 0
$totalSkipped = 0
$totalErrors = 0
foreach ($temp in $tempPaths) {
if (-not (Test-Path $temp.Path)) { continue }
Write-Host "π ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ: $($temp.Name)" -ForegroundColor Cyan
# Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Ρ
Get-ChildItem -Path $temp.Path -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { !$_.PSIsContainer } | ForEach-Object {
try {
Remove-Item -Path $_.FullName -Force -ErrorAction Stop
$totalDeleted++
}
catch {
if ($_.Exception.Message -match "being used by another process|Access to the path") {
$totalSkipped++
} else {
$totalErrors++
}
}
}
# Π£Π΄Π°Π»ΡΠ΅ΠΌ ΠΏΡΡΡΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ
Get-ChildItem -Path $temp.Path -Recurse -Force -Directory -ErrorAction SilentlyContinue |
Sort-Object { $_.FullName.Length } -Descending |
ForEach-Object {
try {
$items = Get-ChildItem -Path $_.FullName -Recurse -Force -ErrorAction SilentlyContinue
if ($items.Count -eq 0) {
Remove-Item -Path $_.FullName -Force -ErrorAction Stop
}
}
catch {
$totalSkipped++
}
}
$sizeAfter = Get-FolderSize -Path $temp.Path
$freed = $size - $sizeAfter
if ($freed -gt 0) {
Write-Host " β ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΎ: $(Format-Size $freed)" -ForegroundColor Green
} else {
Write-Host " οΈ Π€Π°ΠΉΠ»Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ" -ForegroundColor Yellow
}
Write-Host ""
}
# ΠΡΠΎΠ³ΠΎΠ²Π°Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
$totalAfter = 0
foreach ($temp in $tempPaths) {
$totalAfter += Get-FolderSize -Path $temp.Path
}
Write-Host "ββββββββββββββββββββββββββββββββββββββββββββββββββββββ" -ForegroundColor DarkGray
Write-Host "π Π ΠΠΠ£ΠΠ¬Π’ΠΠ’Π« ΠΠ§ΠΠ‘Π’ΠΠ:" -ForegroundColor Magenta
Write-Host " β Π£Π΄Π°Π»Π΅Π½ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²: $totalDeleted" -ForegroundColor Green
Write-Host " β³ ΠΡΠΎΠΏΡΡΠ΅Π½ΠΎ (Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΎ): $totalSkipped" -ForegroundColor Yellow
Write-Host " β ΠΡΠΈΠ±ΠΎΠΊ: $totalErrors" -ForegroundColor Red
Write-Host ""
Write-Host "πΎ ΠΡΠ»ΠΎ: $(Format-Size $totalBefore)" -ForegroundColor White
Write-Host "πΎ Π‘ΡΠ°Π»ΠΎ: $(Format-Size $totalAfter)" -ForegroundColor White
Write-Host "π ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΎ: $(Format-Size ($totalBefore - $totalAfter))" -ForegroundColor Green
Write-Host ""
if ($totalSkipped -gt 0) {
Write-Host "π‘ Π‘ΠΎΠ²Π΅Ρ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ΠΆΠΈΠΌ [2] ΠΈΠ»ΠΈ [3] Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²" -ForegroundColor Cyan
Write-Host ""
}
Write-Host "β¨ ΠΡΠΈΡΡΠΊΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½Π°!" -ForegroundColor Green
}
function Show-TempInfo {
Write-Host ""
Write-Host "ββββββββββββββββββββββββββββββββββββββββββββββββββββββ" -ForegroundColor Cyan
Write-Host "βΉοΈ ΠΠΠ€ΠΠ ΠΠΠ¦ΠΠ― Π TEMP-ΠΠΠΠΠΠ₯" -ForegroundColor Cyan
Write-Host "ββββββββββββββββββββββββββββββββββββββββββββββββββββββ" -ForegroundColor Cyan
Write-Host ""
$tempPaths = @(
@{Path = $env:TEMP; Name = "ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Temp"},
@{Path = "$env:LOCALAPPDATA\Temp"; Name = "Local AppData Temp"},
@{Path = "$env:windir\Temp"; Name = "Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Temp (Windows)"}
)
foreach ($temp in $tempPaths) {
if (Test-Path $temp.Path) {
$size = Get-FolderSize -Path $temp.Path
$fileCount = (Get-ChildItem -Path $temp.Path -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object).Count
$folderCount = (Get-ChildItem -Path $temp.Path -Recurse -Force -Directory -ErrorAction SilentlyContinue | Measure-Object).Count
Write-Host "π $($temp.Name)" -ForegroundColor White
Write-Host " ΠΡΡΡ: $($temp.Path)" -ForegroundColor Gray
Write-Host " Π Π°Π·ΠΌΠ΅Ρ: $(Format-Size $size)" -ForegroundColor Yellow
Write-Host " Π€Π°ΠΉΠ»ΠΎΠ²: $fileCount" -ForegroundColor Cyan
Write-Host " ΠΠ°ΠΏΠΎΠΊ: $folderCount" -ForegroundColor Cyan
Write-Host ""
}
}
Write-Host "π ΠΡΠΎΡΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Temp:" -ForegroundColor Yellow
$blocking = Get-BlockingProcesses
if ($blocking.Count -gt 0) {
foreach ($proc in $blocking) {
Write-Host " βοΈ $($proc.DisplayName) ($($proc.ProcessName)) β $($proc.Count) ΡΠΊΠ·." -ForegroundColor White
}
} else {
Write-Host " β ΠΠ΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²" -ForegroundColor Green
}
Write-Host ""
}
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# ΠΠΠΠΠΠ«Π Π¦ΠΠΠ
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Clear-Host
do {
Show-Menu
Write-Host "ΠΠ°Ρ Π²ΡΠ±ΠΎΡ: " -ForegroundColor Cyan -NoNewline
$choice = Read-Host
switch ($choice) {
"1" {
Clear-TempFiles -Mode "standard"
}
"2" {
Clear-TempFiles -Mode "selective"
}
"3" {
Write-Host ""
Write-Host "β οΈ ΠΠΠΠΠΠΠΠ: ΠΡΠΎΡ ΡΠ΅ΠΆΠΈΠΌ Π·Π°ΠΊΡΠΎΠ΅Ρ ΠΠ‘Π ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΊΡΠΎΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ !" -ForegroundColor Red
Write-Host "πΎ Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π²ΡΠ΅ ΠΎΡΠΊΡΡΡΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ!" -ForegroundColor Yellow
Write-Host ""
Write-Host "ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ? (y/n): " -ForegroundColor Red -NoNewline
$confirm = Read-Host
if ($confirm -eq "y" -or $confirm -eq "Y") {
Clear-TempFiles -Mode "force"
} else {
Write-Host "β ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΎΡΠΌΠ΅Π½Π΅Π½Π°" -ForegroundColor Yellow
}
}
"4" {
Show-TempInfo
}
"5" {
Write-Host ""
Write-Host "π ΠΠΎ ΡΠ²ΠΈΠ΄Π°Π½ΠΈΡ!" -ForegroundColor Green
Write-Host ""
exit
}
default {
Write-Host ""
Write-Host "β ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ½ΠΎΠ²Π°." -ForegroundColor Red
}
}
Write-Host ""
Write-Host "ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π»ΡΠ±ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π² ΠΌΠ΅Π½Ρ..." -ForegroundColor DarkGray
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Clear-Host
} while ($true)
- π ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΡ, ΡΡΠΎΠ±Ρ Π·Π°Π±ΠΈΡΠ°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π· Π»ΠΈΡΠ½Π΅ΠΉ Π²ΠΎΠ΄Ρ ΠΈ ΡΠΊΡΡΡΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΈ ΡΠΊΠΈΠ½Ρ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ Π΄ΡΡΠ³Ρ, ΡΠ΅ΠΉ ΠΠ ΡΠΆΠ΅ Π·Π°Π΄ΡΡ Π°Π΅ΡΡΡ ΠΎΡ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠΎΠ² ΠΊΡΡΠ° β ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ ΡΠΏΠ°ΡΠΈΠ±ΠΎ!
π³ ΠΠΎΠ½Π°Ρ ΡΠ΅ΡΠ΅Π· Ozon (ΠΎΡ 10 β½. ΠΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ: ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ Π.)
β΄οΈ ΠΠΎΡΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ·ΡΡ. ΠΡΠ»ΠΈ ΡΡΠ°ΡΡΡ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΎΠ΄Π½Π° Π‘Π’ΠΠΠΠ ΠΎΡ Π²Π°Ρ = ΠΌΠΎΡΠ½Π°Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΠ° Π΄Π»Ρ ΡΠΎΡΠ΅Π½ Π»ΡΠ΄Π΅ΠΉ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π±ΡΡΡΡΠ΅Π΅! β΄οΈ
Π‘ ΡΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ, ΠΊΠ°Π½Π°Π» "ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Windows" Π½Π° Π―Π½Π΄Π΅ΠΊΡ.ΠΠ·Π΅Π½