Limpar Ficheiros Temporários e Libertar Espaço no Windows
O disco principal chega ao limite com o tempo: atualizações acumuladas, temporários de aplicações, caches de navegador, ficheiros de hibernação e versões antigas do Windows. O Windows traz as ferramentas para recuperar esse espaço sem instalar nada, e um script PowerShell automatiza a rotina nas pastas seguras. Este guia cobre o Windows 10 e o Windows 11, com o script completo no fim.
Neste artigo
- 1. Onde está o espaço ocupado
- 2. Armazenamento e Storage Sense (o caminho GUI)
- 3. O que nunca apagar
- 4. Script PowerShell: temporários, cache de updates e cache de entrega
- 5. Component store (WinSxS) e hibernação
- 6. Erros comuns
- 7. Checklist
- 8. Artigos relacionados
- 9. Fontes oficiais
1. Onde está o espaço ocupado
Antes de apagar, ver o que ocupa o disco. No Definições > Sistema > Armazenamento, o Windows mostra o disco por categorias (aplicações, temporários, documentação, OneDrive), e o item Ficheiros temporários lista o que pode remover já: ficheiros temporários, cache de Delivery Optimization, Recycle Bin e, se houver, o Windows.old de uma atualização recente.
Para a linha de comandos, dois comandos servem de diagnóstico rápido no PowerShell:
Get-PSDrive C | Select-Object Used,Free
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
O AnalyzeComponentStore informa se a limpeza do component store é recomendada, o tamanho real do WinSxS e quanto se pode recuperar. Em máquinas com pouco disco, o resultado orienta os passos seguintes.
2. Armazenamento e Storage Sense (o caminho GUI)
O Storage Sense é a limpeza automática da Microsoft: apaga ficheiros temporários, esvazia o Recycle Bin após um número de dias e descarrega conteúdo OneDrive apenas na cloud quando não é aberto. Por omissão está activo e corre “quando o disco está com pouco espaço” (doc oficial), configurável para diário, semanal, mensal ou naquele gatilho.
- Definições > Sistema > Armazenamento > Storage Sense — activar e escolher a cadência
- Definições > Sistema > Armazenamento > Ficheiros temporários — limpeza imediata com checkbox por categoria
- Downloads: o Storage Sense pode apagar ficheiros de Downloads após N dias sem abrir — deixar desligado em PCs de utilizadores finais (documentos baixados podem ser perdidos)
O Disk Cleanup (cleanmgr) continua disponível: cleanmgr /d C: abre a janela clássica, e cleanmgr /verylowdisk corre com as opções por omissão e sem prompts (doc oficial da sintaxe), útil em scripts batch. A opção “Windows Update Cleanup” dentro do cleanmgr é a mesma que o DISM trata no passo 5.

3. O que nunca apagar
⚠ Atenção
O Clear-RecycleBin é permanente (no script fica comentável), o diskpart clean destrói o disco inteiro, e o Windows.old contém a versão anterior do Windows: após a sua remoção, o rollback para a versão anterior deixa de ser possível (a Microsoft dá 10 dias por omissão). Só remover o Windows.old quando a atualização estiver validada.
- Windows.old — só via Definições > Ficheiros temporários (ou Storage Sense), e só após validar a atualização
- Prefetch (
%windir%\Prefetch) — não ganha espaço real: os ficheiros .pf são pequenos e recriados a cada arranque para acelerar aplicações frequentes. A limpeza regular do Prefetch é um mito popular que prejudica o tempo de arranque - WinSxS à mão — nunca
Remove-Itemdirecto na pasta: só via DISM (passo 5), que sabe o que pode remover - catroot2 — só em troubleshooting de Windows Update com o serviço
cryptsvcparado, não na rotina de limpeza
4. Script PowerShell: temporários, cache de updates e cache de entrega
O script abaixo é a versão segura do que circula em redes sociais: acrescenta -ErrorAction SilentlyContinue (ficheiros em uso não partem o script), usa o cmdlet Delete-DeliveryOptimizationCache (módulo DeliveryOptimization do Windows, incluído na referência de PowerShell do Windows Server 2025), não toca no Prefetch e mostra o espaço recuperado. Correr em PowerShell como Administrador:
# 1. Parar os serviços de update ( liberta lock aos ficheiros )
Stop-Service wuauserv,bits -Force -ErrorAction SilentlyContinue
# 2. Cache de downloads do Windows Update
Remove-Item -Path "$env:windir\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue
# 3. Cache de Delivery Optimization ( cmdlet oficial )
Delete-DeliveryOptimizationCache -Force -ErrorAction SilentlyContinue
# 4. Temporários do utilizador e do sistema
Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:windir\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
# 5. Recycle Bin ( PERMANENTE — comente a linha se não quiser limpar )
Clear-RecycleBin -DriveLetter C -Force -ErrorAction SilentlyContinue
# 6. Disk Cleanup sem prompts ( opções por omissão )
Start-Process cleanmgr -ArgumentList '/verylowdisk' -Wait
# 7. Retomar os serviços
Start-Service bits,wuauserv -ErrorAction SilentlyContinue
# Espaço livre depois
Get-PSDrive C | Select-Object Used,Free
O que cada bloco faz:
- Serviços:
wuauserv(Windows Update) ebits(transferências em segundo plano) mantêm handles abertos sobre os ficheiros de cache, e é por isso que a remoção falha com eles activos - SoftwareDistribution\Download: cache de instaladores de atualização, regenerada no próximo download
- Delete-DeliveryOptimizationCache: cache P2P de entrega de atualizações entre PCs (o
Remove-Itemdirecto ao caminho funciona, mas o cmdlet é a via suportada) - %TEMP% e %windir%\Temp: temporários de sessão e de sistema, com ficheiros em uso saltados pelo
-ErrorAction SilentlyContinue - cleanmgr /verylowdisk: doc oficial — “Run with the default settings, no user prompts”
5. Component store (WinSxS) e hibernação
O WinSxS (component store) é o maior consumidor de disco a longo prazo: guarda todas as versões de componentes para permitir desinstalar atualizações. A limpeza oficial é por DISM, em prompt elevado — e é imediata. A tarefa agendada StartComponentCleanup (Task Scheduler\Microsoft\Windows\Servicing) faz o mesmo trabalho, mas espera 30 dias após cada update antes de remover a versão anterior e tem um timeout de 1 hora que pode deixar a limpeza incompleta. O DISM apanha tudo na hora:
Dism.exe /Online /Cleanup-Image /StartComponentCleanup
A opção /ResetBase remove todas as versões substituídas de cada componente: a doc oficial avisa que “all existing update packages can’t be uninstalled after this command” — as atualizações já instaladas deixam de poder ser desinstaladas (as futuras continuam a poder). Em servidores com SLA de rollback, correr o comando sem /ResetBase (o comando anterior) e reservar o /ResetBase para a janela de manutenção, depois de validar que nenhum rollback é necessário:
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
Hibernação: o hiberfil.sys tem tamanho por omissão em função da RAM física (a doc do /size fixa o mínimo em 50%). Em desktops sem hibernação (e sem Fast Startup dependente), powercfg /h off desactiva e apaga o ficheiro. Em portáteis, preferir powercfg /h /type reduced — doc oficial: o hiberfile reduced só suporta hiberboot (arranque rápido), não hibernação completa, e ocupa menos. Se o tamanho do hiberfile já foi personalizado (ou HiberFileSizePercent ≥ 40 na registry), o hiberfile conta como full e o comando devolve “The parameter is incorrect”: correr primeiro powercfg /h /size 0 e só depois /type reduced.
CompactOS: comprimir os binários do sistema em máquinas com disco pequeno (doc oficial): compact /compactos:always comprime, compact /compactos:query verifica o estado. Em máquinas com CPU fraco o custo de descompressão pode pesar — testar antes de aplicar em frota.
6. Erros comuns
| Erro / sintoma | Causa | Correcção |
|---|---|---|
| Remove-Item: Access denied em %TEMP% | Ficheiro em uso por uma aplicação ou serviço | Normal: o -ErrorAction SilentlyContinue salta; fechar a aplicação e repetir |
| SoftwareDistribution não apaga | wuauserv ou bits activos (handles abertos) | Confirmar Stop-Service antes do bloco 2 (ou sc stop wuauserv, doc WSUS) |
| Delete-DeliveryOptimizationCache: cmdlet não existe | Módulo DeliveryOptimization só no Windows 10 1809+/11 | Alternar para Remove-Item no caminho %windir%\ServiceProfiles\NetworkService\AppData\Local\Microsoft\Windows\DeliveryOptimization\Cache |
| cleanmgr /verylowdisk não limpa mais nada | Opções por omissão só: sem user prompts e sem categorias seleccionadas | Usar /sageset:1 uma vez, escolher categorias, depois cleanmgr /sagerun:1 agendável |
| Dism erro 0x800f0806 | Component store em estado pendente (update a meio ou reinício em falta) | Reiniciar, terminar updates pendentes, repetir o /StartComponentCleanup |
| Espaço não recupera o esperado | Ocupação real está em WinSxS, hiberfil, pagefile ou Windows.old | AnalyzeComponentStore + powercfg /h off + Definições > Ficheiros temporários (Windows.old) |
7. Checklist
- [ ] Analisar o disco: Definições > Armazenamento +
AnalyzeComponentStore - [ ] Storage Sense configurado (e Downloads desligado em PCs partilhados)
- [ ] Ficheiros temporários limpos via Definições (com o Windows.old só após validar atualização)
- [ ] Script PowerShell executado como Admin (temporários + cache de updates + DO + Recycle Bin)
- [ ] WinSxS:
/StartComponentCleanupe/ResetBasesó quando o rollback de updates não for preciso - [ ] Hibernação:
/h offem desktops ou/type reducedem portáteis - [ ] CompactOS avaliado em discos pequenos
- [ ] Recycle Bin esvaziado (permanente, validar antes)
8. Artigos relacionados
- Windows Server – libertar espaço — a mesma rotina no lado server, com pagefile e logs de sistema
- Diagnóstico de Disco no Windows — SMART, CHKDSK e discos em fim de vida
- PowerShell: Comandos de Diagnóstico de Conetividade no Windows — o toolkit PowerShell de rede
9. Fontes oficiais
- Configure Storage Sense — Microsoft Learn — o que o Storage Sense limpa e como configurar (Intune/GPO)
- Delete-DeliveryOptimizationCache — Microsoft Learn — sintaxe do cmdlet (referência do Windows Server 2025)
- Cleanmgr — Microsoft Learn — sintaxe completa do Disk Cleanup (/verylowdisk, /sageset, /sagerun)
- Clean Up the WinSxS Folder — Microsoft Learn — StartComponentCleanup e /ResetBase com os avisos oficiais
- Powercfg command-line options — Microsoft Learn — /h off, /size (mínimo 50), /size 0 + /type reduced
- Compact OS — Microsoft Learn — compact /compactos:query e /always