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:

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:

PDF Strumenti PDF gratis Nel browser, senza upload Apri gli strumenti