diff --git a/estudio/Clear-RevitCache.ps1 b/estudio/Clear-RevitCache.ps1 new file mode 100644 index 0000000..4f8776d --- /dev/null +++ b/estudio/Clear-RevitCache.ps1 @@ -0,0 +1,104 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + Deletes Revit cache and temp files for all user profiles on the machine. +.DESCRIPTION + Targets CollaborationCache, UserDataCache, journal files, and Revit-related + temp files. Does NOT touch user preferences or settings. +#> + +$ErrorActionPreference = 'SilentlyContinue' + +$totalFreed = 0 +$deletedItems = 0 + +function Remove-RevitPath { + param( + [string]$Path, + [string]$Label + ) + if (-not (Test-Path $Path)) { return 0 } + + $sizeBefore = (Get-ChildItem $Path -Recurse -Force -ErrorAction SilentlyContinue | + Measure-Object -Property Length -Sum).Sum + $sizeBefore = if ($sizeBefore) { $sizeBefore } else { 0 } + + Remove-Item $Path -Recurse -Force -ErrorAction SilentlyContinue + Write-Host " Removed: $Label ($([math]::Round($sizeBefore / 1MB, 2)) MB)" -ForegroundColor Green + return $sizeBefore +} + +function Remove-RevitFiles { + param( + [string]$Path, + [string]$Filter, + [string]$Label + ) + if (-not (Test-Path $Path)) { return 0 } + + $files = Get-ChildItem $Path -Filter $Filter -Recurse -Force -ErrorAction SilentlyContinue + if (-not $files) { return 0 } + + $size = ($files | Measure-Object -Property Length -Sum).Sum + $size = if ($size) { $size } else { 0 } + + $files | Remove-Item -Force -ErrorAction SilentlyContinue + Write-Host " Removed: $Label ($([math]::Round($size / 1MB, 2)) MB, $($files.Count) files)" -ForegroundColor Green + return $size +} + +Write-Host "`nRevit Cache Cleaner" -ForegroundColor Cyan +Write-Host "===================" -ForegroundColor Cyan + +$userProfiles = Get-ChildItem 'C:\Users' -Directory -ErrorAction Stop | + Where-Object { $_.Name -notin @('Public', 'Default', 'Default User', 'All Users') } + +foreach ($profile in $userProfiles) { + $userName = $profile.Name + $localApp = Join-Path $profile.FullName 'AppData\Local' + $localTemp = Join-Path $profile.FullName 'AppData\Local\Temp' + + # Find all Revit version folders (e.g. "Autodesk Revit 2022") + $revitLocalBase = Join-Path $localApp 'Autodesk\Revit' + $revitVersions = Get-ChildItem $revitLocalBase -Directory -ErrorAction SilentlyContinue + + if (-not $revitVersions) { continue } + + Write-Host "`nUser: $userName" -ForegroundColor Yellow + + foreach ($ver in $revitVersions) { + Write-Host " Version: $($ver.Name)" + + # Worksharing / cloud model cache + $totalFreed += Remove-RevitPath (Join-Path $ver.FullName 'CollaborationCache') 'CollaborationCache' + + # User data cache + $totalFreed += Remove-RevitPath (Join-Path $ver.FullName 'UserDataCache') 'UserDataCache' + + # Crash reports / dump files + $totalFreed += Remove-RevitPath (Join-Path $ver.FullName 'CrashReport') 'CrashReports' + $totalFreed += Remove-RevitPath (Join-Path $ver.FullName 'RevitCrashFiles') 'RevitCrashFiles' + + # Journal (log) files — keeps folder, deletes contents + $journalsPath = Join-Path $ver.FullName 'Journals' + $totalFreed += Remove-RevitFiles $journalsPath '*.txt' 'Journal files' + + # Loose .tmp files in the version root + $totalFreed += Remove-RevitFiles $ver.FullName '*.tmp' '.tmp files' + } + + # Revit-related temp files in %LOCALAPPDATA%\Temp + $revitTempPattern = @('Revit_*.tmp', 'acad*.tmp', 'rvt*.tmp', 'Autodesk*.tmp') + foreach ($pattern in $revitTempPattern) { + $totalFreed += Remove-RevitFiles $localTemp $pattern "Temp\$pattern" + } +} + +# Machine-wide Autodesk temp (some installers/components write here) +$machineTemp = 'C:\Windows\Temp' +$totalFreed += Remove-RevitFiles $machineTemp 'Revit_*.tmp' 'Windows\Temp Revit files' +$totalFreed += Remove-RevitFiles $machineTemp 'Autodesk*.tmp' 'Windows\Temp Autodesk files' + +Write-Host "`n===================" -ForegroundColor Cyan +Write-Host "Total freed: $([math]::Round($totalFreed / 1MB, 2)) MB" -ForegroundColor Cyan +Write-Host "Done.`n" -ForegroundColor Cyan