Script BAT per controllare lo spazio disco in Windows
Uno script BAT per il controllo dello spazio disco Windows può verificare automaticamente le unità locali e registrare un avviso quando lo spazio libero scende sotto una soglia minima. La soluzione proposta usa un file .bat come avvio e PowerShell per leggere in modo affidabile la capacità disponibile. Il risultato viene salvato in un file di log nella stessa cartella dello script. La soglia è modificabile, per esempio a 10 GB, e lo script può essere eseguito manualmente oppure tramite l’Utilità di pianificazione di Windows. Il controllo considera soltanto i dischi fissi locali, non chiavette o unità di rete.
Come funziona lo script BAT per il controllo dello spazio disco Windows
Il file BAT legge tutte le unità locali riconosciute da Windows come dischi fissi, confronta lo spazio libero con una soglia espressa in gigabyte e scrive un messaggio nel file avvisi_spazio_disco.log quando trova un valore troppo basso.
La parte BAT avvia PowerShell con Get-CimInstance Win32_LogicalDisk, un metodo integrato in Windows 10 e Windows 11 per ottenere informazioni sulle unità. L’uso di PowerShell evita i problemi dei vecchi comandi wmic, ormai deprecati nelle versioni più recenti di Windows.
Il controllo riguarda soltanto le unità con DriveType=3. Questo valore identifica i dischi locali, come C:, D: o altre partizioni interne. Le unità USB, i lettori ottici e i percorsi condivisi in rete non vengono inclusi.
Prima di creare il file, sono necessari:
- Windows 10 o Windows 11.
- Un editor di testo come Blocco note.
- Una cartella in cui l’utente abbia il permesso di creare e modificare file.
- PowerShell disponibile, normalmente già incluso in Windows.
Come creare il file BAT con la soglia minima
Passo 1: creare un nuovo file di testo
Aprire Blocco note, incollare il codice seguente e salvare il documento con il nome controllo_spazio_disco.bat. Nella finestra di salvataggio impostare Tipo file su Tutti i file, così Windows non aggiungerà automaticamente l’estensione .txt.
@echo off
setlocal
set "MIN_FREE_GB=10"
set "LOG_FILE=%~dp0avvisi_spazio_disco.log"
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command ^
"$min = [int64]($env:MIN_FREE_GB) * 1GB; $log = $env:LOG_FILE; Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3' | ForEach-Object { if ($_.FreeSpace -ne $null -and $_.FreeSpace -lt $min) { $free = [math]::Round($_.FreeSpace / 1GB, 2); $line = '{0} - AVVISO: {1} spazio libero: {2} GB' -f (Get-Date -Format 'yyyy-MM-dd HH:mm:ss'), $_.DeviceID, $free; Add-Content -LiteralPath $log -Value $line -Encoding UTF8; Write-Host $line -ForegroundColor Yellow } }"
endlocal
Il parametro MIN_FREE_GB=10 stabilisce la soglia minima. Con il valore 10, lo script registra un avviso per ogni disco con meno di 10 GB liberi. Per usare una soglia diversa è sufficiente sostituire 10 con un altro numero intero, ad esempio 5, 15 o 50.
Il file di log viene creato nella stessa cartella del file BAT grazie alla variabile %~dp0. È preferibile salvare lo script in una cartella personale, come DocumentiScript, invece che in C:Windows o C:Program Files, dove Windows potrebbe impedire la scrittura senza autorizzazioni elevate.
Passo 2: verificare l’estensione del file
In Esplora file attivare la visualizzazione delle estensioni da Visualizza > Mostra > Estensioni nomi file. Il nome deve essere esattamente controllo_spazio_disco.bat e non controllo_spazio_disco.bat.txt.
Un file BAT corretto mostra normalmente il tipo File batch di Windows. Se l’estensione è doppia, rinominare il file rimuovendo .txt.
Come eseguire il controllo e leggere l’avviso
Passo 3: avviare lo script
Fare doppio clic su controllo_spazio_disco.bat. Se una delle unità locali ha meno dello spazio configurato, nella finestra nera del prompt apparirà un messaggio simile a questo:
2026-08-12 14:30:00 - AVVISO: C: spazio libero: 8.42 GB
Lo stesso messaggio viene aggiunto al file avvisi_spazio_disco.log. La data e l’ora sono registrate nel formato anno-mese-giorno ore:minuti:secondi, utile per ricostruire quando lo spazio ha superato la soglia critica.
Se nessuna unità è sotto la soglia, lo script non visualizza avvisi e non aggiunge righe al log. Il file di registro potrebbe quindi non esistere dopo la prima esecuzione normale.
Passo 4: eseguire una prova
Per verificare il funzionamento senza attendere che un disco si riempia, modificare temporaneamente la riga:
set "MIN_FREE_GB=10"
Impostare un valore superiore allo spazio libero disponibile, per esempio 1000, eseguire il file BAT e controllare la presenza dell’avviso. Dopo il test, ripristinare la soglia desiderata, come 10.
Lo script registra un nuovo avviso a ogni esecuzione in cui un disco resta sotto la soglia. Questo comportamento è utile con l’Utilità di pianificazione, ma può produrre più righe uguali se il controllo viene eseguito frequentemente.
Come automatizzare il controllo con Utilità di pianificazione
Per eseguire lo script automaticamente, aprire il menu Start e cercare Utilità di pianificazione. Creare quindi un’attività di base con una frequenza adatta, per esempio giornaliera o all’avvio del computer.
Nel campo dell’azione selezionare Avvia programma e indicare il percorso completo del file controllo_spazio_disco.bat. Se il percorso contiene spazi, usare il pulsante Sfoglia invece di digitarlo manualmente.
Una pianificazione giornaliera è sufficiente per un computer domestico. Su un server o su un PC che salva molti file durante la giornata, un intervallo più breve può fornire avvisi più tempestivi. L’Utilità di pianificazione deve avere accesso alla cartella del file BAT e al file di log.
Il metodo proposto non invia email e non mostra notifiche di Windows: salva gli avvisi localmente. Per ricevere notifiche esterne servirebbe aggiungere un secondo sistema, come un’attività PowerShell dedicata o un software di monitoraggio.
Perché non usare soltanto WMIC
wmic logicaldisk era spesso utilizzato nei vecchi script BAT per leggere lo spazio disponibile, ma WMIC è stato deprecato e può non essere installato nelle versioni moderne di Windows. Get-CimInstance Win32_LogicalDisk è più adatto a Windows 10 e Windows 11 e restituisce direttamente il valore dello spazio libero in byte.
Il confronto viene eseguito in byte dopo la conversione della soglia in gigabyte. Il valore riportato nel log è arrotondato a due decimali, quindi un messaggio come 8.42 GB rappresenta una lettura più precisa rispetto a un semplice numero intero.
Se il comando non produce risultati, controllare che PowerShell sia disponibile e che il file sia stato salvato con estensione .bat. Su installazioni aziendali con criteri restrittivi, l’amministratore potrebbe inoltre limitare l’avvio di PowerShell.
Uno script BAT per il controllo dello spazio disco Windows permette di registrare rapidamente i dischi che stanno raggiungendo una condizione critica.
Per approfondire, consulta la documentazione ufficiale.
Potrebbe interessarti anche:
- Windows Update bloccato allo 0 Windows 11: script PowerShell
- Errore DISM 87 Windows 11: come risolverlo
- Servizio Windows Installer non avviato: come ripristinarlo
- Minidump di Windows 11: trova il driver della schermata blu
FAQ
No. Il filtro DriveType=3 include i dischi locali fissi e normalmente esclude chiavette USB, lettori ottici e unità di rete.
Il file avvisi_spazio_disco.log viene creato nella stessa cartella di controllo_spazio_disco.bat.
Il codice attuale usa un numero intero di gigabyte. Per soglie più precise è necessario modificare la conversione della variabile e usare un valore espresso in megabyte o byte.
Il log viene creato solo quando almeno un disco è sotto la soglia. Verificare anche che la cartella dello script consenta la scrittura dei file.
No. Lo script salva l’avviso nel log e lo mostra nella finestra del prompt; per notifiche email o popup serve un’ulteriore automazione.
Altri articoli di questa serie:
- Script batch riparazione file sistema Windows 10/11
- Script BAT per pulire i file temporanei di Windows
- Script batch reset rete Windows: ripristino completo
- Script CMD per riparare Windows Update
- Script batch rapporto diagnostico Windows: tutorial
- Script BAT backup automatico Robocopy Windows
- Script batch controllo servizi Windows e arresti
- Script CMD per archiviare file vecchi su Windows
- Script batch: organizza i file per estensione
