From b89d9664b5b2487c4286d6a96ee4b5defd0afbce Mon Sep 17 00:00:00 2001 From: Joeri Date: Fri, 20 Feb 2026 16:43:59 +0100 Subject: [PATCH] Added bleachbit --- bleachbit.ps1 | 189 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 bleachbit.ps1 diff --git a/bleachbit.ps1 b/bleachbit.ps1 new file mode 100644 index 0000000..192d2c8 --- /dev/null +++ b/bleachbit.ps1 @@ -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 \ No newline at end of file