scripts/bleachbit.ps1
2026-02-21 15:17:04 +01:00

130 lines
No EOL
5.1 KiB
PowerShell

# BleachBit Script
# Downloads BleachBit portable, extracts it, and runs the cleanup command
param(
[string]$InstallPath = "C:\Quest"
)
$BleachBitCleaners = @(
"adobe_reader.cache", "adobe_reader.mru", "adobe_reader.tmp",
"amule.known_clients", "amule.known_files", "amule.logs", "amule.temp",
"brave.cache",
"chromium.cache", "chromium.vacuum",
"deepscan.backup", "deepscan.ds_store", "deepscan.thumbs_db", "deepscan.tmp",
"deepscan.vim_swap_root", "deepscan.vim_swap_user",
"discord.cache", "discord.vacuum",
"filezilla.mru",
"firefox.cache", "firefox.crash_reports", "firefox.url_history",
"flash.cache", "flash.cookies",
"gimp.tmp",
"google_chrome.cache", "google_earth.temporary_files", "google_toolbar.search_history",
"gpodder.cache", "gpodder.logs",
"hexchat.logs", "hippo_opensim_viewer.cache",
"internet_explorer.cache",
"java.cache",
"libreoffice.history",
"microsoft_edge.cache", "microsoft_office.debug_logs", "microsoft_office.mru",
"midnightcommander.history", "miro.cache", "miro.logs",
"octave.history", "openofficeorg.cache", "openofficeorg.recent_documents",
"opera.cache",
"paint.mru", "palemoon.cache", "pidgin.cache", "pidgin.logs",
"realplayer.logs",
"safari.cache", "screenlets.logs", "seamonkey.cache",
"secondlife_viewer.Cache", "secondlife_viewer.Logs", "silverlight.temp",
"skype.installers", "slack.cache", "smartftp.cache", "smartftp.log", "smartftp.mru",
"system.recycle_bin", "system.tmp", "system.updates",
"teamviewer.logs", "teamviewer.mru", "thunderbird.cache",
"vim.history", "vlc.memory_dump", "vlc.mru", "vuze.cache", "vuze.logs", "vuze.stats", "vuze.temp",
"warzone2100.logs", "waterfox.cache", "winamp.mru",
"windows_defender.backup", "windows_defender.history", "windows_defender.logs",
"windows_defender.quarantine", "windows_defender.temp",
"windows_explorer.mru", "windows_explorer.run", "windows_explorer.search_history",
"windows_explorer.shellbags", "windows_explorer.thumbnails",
"windows_media_player.cache", "windows_media_player.mru",
"winrar.history", "winrar.temp", "winzip.mru", "wordpad.mru",
"yahoo_messenger.cache", "yahoo_messenger.chat_logs", "yahoo_messenger.logs",
"zoom.cache", "zoom.logs"
)
Write-Host "Stopping Edge processes..."
try {
$EdgeProcesses = Get-Process -Name "*Edge*" -ErrorAction SilentlyContinue
if ($EdgeProcesses) {
$EdgeProcesses | Stop-Process -Force -ErrorAction Stop
Write-Host "Edge processes stopped successfully."
} else {
Write-Host "No Edge processes running."
}
} catch {
Write-Host "Warning: Could not stop Edge processes: $($_.Exception.Message)"
}
$DownloadURL = "https://download.bleachbit.org/BleachBit-5.0.2-portable.zip"
$zipPath = "$InstallPath\BleachBit.zip"
$exePath = "$InstallPath\BleachBit-Portable\bleachbit_console.exe"
# Create directory if it doesn't exist
if (-not (Test-Path $InstallPath)) {
New-Item -Path $InstallPath -ItemType Directory -Force | Out-Null
}
# Download if not exists
if (-not (Test-Path $zipPath)) {
Write-Host "Downloading BleachBit..."
Invoke-WebRequest -Uri $DownloadURL -OutFile $zipPath -UseBasicParsing
}
# Extract if exe doesn't exist
if (-not (Test-Path $exePath)) {
Write-Host "Extracting BleachBit..."
Expand-Archive -Path $zipPath -DestinationPath $InstallPath -Force
}
# Run the cleanup command and capture output
Write-Host "Running BleachBit cleanup..."
# Create temp files for output capture
$stdoutFile = "$InstallPath\bleachbit_stdout.txt"
$stderrFile = "$InstallPath\bleachbit_stderr.txt"
try {
$process = Start-Process -FilePath $exePath -ArgumentList "--clean $CleanerArgs" -NoNewWindow -Wait -PassThru -RedirectStandardOutput $stdoutFile -RedirectStandardError $stderrFile -ErrorAction Stop
# Read the captured output
$outputText = ""
if (Test-Path $stdoutFile) {
$outputText = Get-Content -Path $stdoutFile -Raw -ErrorAction SilentlyContinue
}
if (Test-Path $stderrFile) {
$stderrText = Get-Content -Path $stderrFile -Raw -ErrorAction SilentlyContinue
if ($stderrText) {
$outputText += $stderrText
}
}
Write-Host $outputText
# Extract specific lines
$diskSpace = ""
$filesDeleted = ""
$lines = $outputText -split "`n"
foreach ($line in $lines) {
if ($line -match "Vrijgekomen schijfruimte:\s*(.+)") {
$diskSpace = $matches[1].Trim()
}
if ($line -match "Aantal verwijderde bestanden:\s*(.+)") {
$filesDeleted = $matches[1].Trim()
}
}
} catch {
$diskSpace = ""
$filesDeleted = ""
Write-Host "Error running BleachBit: $($_.Exception.Message)"
} finally {
# Cleanup temp files
if (Test-Path $stdoutFile) { Remove-Item $stdoutFile -ErrorAction SilentlyContinue }
if (Test-Path $stderrFile) { Remove-Item $stderrFile -ErrorAction SilentlyContinue }
}
# Output JSON result
$result = @{
success = $true
diskSpace = $diskSpace
filesDeleted = $filesDeleted
} | ConvertTo-Json -Compress
Write-Output $result