Add Revit cache and temp file cleanup script

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
uhlwoogi
2026-04-30 14:39:45 +00:00
co-authored by Claude Sonnet 4.6
parent b34ded71bd
commit 8c31cedf35
+104
View File
@@ -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