Added bleachbit

This commit is contained in:
Joeri 2026-02-20 16:43:59 +01:00
parent 7252ef245a
commit b89d9664b5

189
bleachbit.ps1 Normal file
View file

@ -0,0 +1,189 @@
# Define BleachBit cleaners
$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"
)
# Stop Edge processes
Write-Log "Stopping Edge processes..." -Level "INFO"
try {
$EdgeProcesses = Get-Process -Name "*Edge*" -ErrorAction SilentlyContinue
if ($EdgeProcesses) {
$EdgeProcesses | Stop-Process -Force -ErrorAction Stop
Write-Log "Edge processes stopped successfully." -Level "INFO"
} else {
Write-Log "No Edge processes running." -Level "INFO"
}
} catch {
Write-Log "Warning: Could not stop Edge processes: $($_.Exception.Message)" -Level "WARNING"
}
# Download BleachBit Portable
Write-Log "Downloading BleachBit Portable..." -Level "INFO"
$BleachBitZip = "C:\Quest\BleachBitPortable.zip"
$BleachBitUrl = "https://download.bleachbit.org/BleachBit-5.0.2-portable.zip"
$MinFileSizeBytes = 10000000 # Minimum 10MB
try {
# Remove old zip file if exists
if (Test-Path $BleachBitZip) {
Remove-Item $BleachBitZip -Force -ErrorAction Stop
}
# Download with retry logic
$DownloadSuccess = $false
$RetryCount = 0
$MaxRetries = 3
while (-not $DownloadSuccess -and $RetryCount -lt $MaxRetries) {
$RetryCount++
Write-Log "Download attempt $RetryCount of $MaxRetries..." -Level "INFO"
try {
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($BleachBitUrl, $BleachBitZip)
$DownloadSuccess = $true
Write-Log "Download completed." -Level "INFO"
} catch {
Write-Log "Download attempt failed: $($_.Exception.Message)" -Level "WARNING"
Start-Sleep -Seconds 5
}
}
if (-not $DownloadSuccess) {
throw "Failed to download after $MaxRetries attempts"
}
# Verify file size
$FileSize = (Get-Item $BleachBitZip).Length
Write-Log "Downloaded file size: $($FileSize / 1MB) MB" -Level "INFO"
if ($FileSize -lt $MinFileSizeBytes) {
throw "Downloaded file is too small ($($FileSize / 1MB) MB). Expected at least $($MinFileSizeBytes / 1MB) MB."
}
$ScriptResult.bleachbit_cleanup.downloaded = $true
Write-Log "BleachBit Portable downloaded successfully." -Level "INFO"
} catch {
$ErrorMsg = "Failed to download BleachBit Portable: $($_.Exception.Message)"
$ScriptResult.bleachbit_cleanup.errors += $ErrorMsg
Write-Log $ErrorMsg -Level "ERROR"
}
# Extract BleachBit Portable
if ($ScriptResult.bleachbit_cleanup.downloaded) {
Write-Log "Extracting BleachBit Portable..." -Level "INFO"
$BleachBitDest = "C:\Quest"
try {
# Remove old extraction folder if exists
$OldBleachBitPath = Join-Path $BleachBitDest "BleachBit-Portable"
if (Test-Path $OldBleachBitPath) {
Remove-Item $OldBleachBitPath -Recurse -Force -ErrorAction Stop
}
# Extract using Expand-Archive
Expand-Archive -Path $BleachBitZip -DestinationPath $BleachBitDest -Force -ErrorAction Stop
$ScriptResult.bleachbit_cleanup.extracted = $true
Write-Log "BleachBit Portable extracted successfully." -Level "INFO"
# Remove zip file
Remove-Item $BleachBitZip -Force -ErrorAction SilentlyContinue
Write-Log "Removed temporary zip file." -Level "INFO"
} catch {
$ErrorMsg = "Failed to extract BleachBit Portable: $($_.Exception.Message)"
$ScriptResult.bleachbit_cleanup.errors += $ErrorMsg
Write-Log $ErrorMsg -Level "ERROR"
# Try alternative extraction using shell
try {
Write-Log "Trying alternative extraction method..." -Level "WARNING"
$shell = New-Object -ComObject Shell.Application
$zip = $shell.NameSpace($BleachBitZip)
$dest = $shell.NameSpace($BleachBitDest)
$dest.CopyHere($zip.items(), 16)
Start-Sleep -Seconds 5
$ScriptResult.bleachbit_cleanup.extracted = $true
Write-Log "BleachBit Portable extracted using shell method." -Level "INFO"
# Remove zip file
Remove-Item $BleachBitZip -Force -ErrorAction SilentlyContinue
} catch {
Write-Log "Alternative extraction also failed: $($_.Exception.Message)" -Level "ERROR"
}
}
}
# Run BleachBit cleanup
$BleachBitExe = "C:\Quest\BleachBit-Portable\bleachbit_console.exe"
if (Test-Path $BleachBitExe) {
Write-Log "Running BleachBit cleanup with $($BleachBitCleaners.Count) cleaners..." -Level "INFO"
try {
# Build cleaner arguments
$CleanerArgs = $BleachBitCleaners -join " "
# Run BleachBit
$BleachBitProcess = Start-Process -FilePath $BleachBitExe -ArgumentList "--clean $CleanerArgs" -NoNewWindow -Wait -PassThru -ErrorAction Stop
$ScriptResult.bleachbit_cleanup.cleaners_run = $BleachBitCleaners.Count
Write-Log "BleachBit cleanup completed. Exit code: $($BleachBitProcess.ExitCode)" -Level "INFO"
# Clean up BleachBit files after use
try {
Write-Log "Cleaning up BleachBit Portable files..." -Level "INFO"
Remove-Item "C:\Quest\BleachBit-Portable" -Recurse -Force -ErrorAction SilentlyContinue
Write-Log "BleachBit Portable files removed." -Level "INFO"
} catch {
Write-Log "Warning: Could not remove BleachBit files: $($_.Exception.Message)" -Level "WARNING"
}
} catch {
$ErrorMsg = "Failed to run BleachBit cleanup: $($_.Exception.Message)"
$ScriptResult.bleachbit_cleanup.errors += $ErrorMsg
$ScriptResult.bleachbit_cleanup.cleaners_failed = $BleachBitCleaners.Count
Write-Log $ErrorMsg -Level "ERROR"
}
} else {
Write-Log "BleachBit executable not found at: $BleachBitExe" -Level "ERROR"
}
Write-Log "BleachBit cleanup section completed." -Level "INFO"
"" | Out-File -FilePath $LogFile -Append -Encoding UTF8