Script batch controllo spazio disco Windows: avvisi
Uno script batch controllo spazio disco Windows può analizzare automaticamente le unità locali e segnalare quelle con poco spazio libero. Il file proposto usa Windows PowerShell e il comando Get-CimInstance, già disponibile nelle installazioni moderne di Windows 10 e Windows 11, per leggere capacità e spazio residuo dei dischi. La soglia predefinita è fissata al 15% di spazio libero, ma può essere modificata in una sola riga. Lo script mostra i dati in gigabyte, evidenzia le unità quasi piene e restituisce anche un codice di uscita utile per le attività pianificate.
Come funziona lo script batch per controllare lo spazio disco
Il file .bat interroga le unità locali con DriveType=3, cioè i dischi fissi presenti nel computer. Le unità di rete, i lettori ottici e i dispositivi rimovibili non vengono inclusi nello scanning, evitando risultati non pertinenti o temporaneamente non disponibili.
Windows PowerShell esegue Get-CimInstance Win32_LogicalDisk, una classe WMI che fornisce informazioni su dimensione totale e spazio libero. Il comando è preferibile al vecchio wmic, perché WMIC è stato deprecato da Microsoft e non è più disponibile in alcune installazioni recenti di Windows 11.
Lo script calcola la percentuale di spazio libero e confronta il risultato con la variabile SOGLIA. Quando il valore è uguale o inferiore alla soglia, l'unità viene indicata come quasi piena.
- La soglia iniziale è del 15% di spazio libero.
- I valori vengono mostrati in gigabyte con due decimali.
- Sono considerate soltanto le unità locali con una capacità valida.
- Il codice di uscita è
0se tutti i dischi superano la soglia. - Il codice di uscita è
1se almeno un'unità è quasi piena.
Come creare lo script .bat su Windows
Passo 1: aprire Blocco note
Apri Blocco note dal menu Start e incolla il codice seguente. Il file deve essere salvato con estensione .bat, non .txt.
@echo off
setlocal EnableExtensions EnableDelayedExpansion
rem Soglia minima di spazio libero, espressa in percentuale
set "SOGLIA=15"
set "ALL_OK=1"
echo Controllo dello spazio libero sulle unita locali...
echo Soglia di avviso: %SOGLIA%%% di spazio libero
echo.
for /f "tokens=1-4 delims=|" %%A in ('powershell.exe -NoProfile -Command "Get-CimInstance Win32_LogicalDisk ^| Where-Object { $_.DriveType -eq 3 -and $_.Size -gt 0 } ^| ForEach-Object { $size=[math]::Round($_.Size/1GB,2); $free=[math]::Round($_.FreeSpace/1GB,2); $pct=[math]::Round(($_.FreeSpace/$_.Size)*100,0); Write-Output ($_.DeviceID + [char]124 + $size + [char]124 + $free + [char]124 + $pct) }"') do (
echo Unita %%A - Totale: %%B GB - Libero: %%C GB - Spazio libero: %%D%%
if %%D LEQ %SOGLIA% (
echo [AVVISO] %%A e quasi piena.
set "ALL_OK=0"
) else (
echo [OK] %%A ha spazio sufficiente.
)
echo.
)
if "%ALL_OK%"=="0" (
echo Controllo terminato: almeno un'unita ha superato la soglia.
exit /b 1
) else (
echo Controllo terminato: tutte le unita rispettano la soglia.
exit /b 0
)
Nel menu File di Blocco note seleziona Salva con nome. Nella casella del nome inserisci, per esempio, controllo-dischi.bat. Imposta Salva come su Tutti i file e, se disponibile, scegli UTF-8 come codifica. Il nome non deve terminare con .txt: se Blocco note aggiunge automaticamente l'estensione, il file diventerebbe controllo-dischi.bat.txt e non verrebbe eseguito come script batch.
Passo 2: eseguire il file
Fai doppio clic su controllo-dischi.bat. Si aprirà una finestra del Prompt dei comandi con una riga per ogni unità locale, contenente capacità, spazio libero e percentuale residua.
L'esecuzione non richiede normalmente privilegi di amministratore, perché la lettura delle informazioni di Win32_LogicalDisk è consentita agli utenti standard. Se PowerShell è stato rimosso o bloccato da criteri aziendali, il comando non potrà produrre l'elenco dei dischi.
Passo 3: interpretare il risultato
Un output simile al seguente indica che l'unità supera la soglia:
Unita C: - Totale: 476.84 GB - Libero: 92.41 GB - Spazio libero: 19% [OK] C: ha spazio sufficiente.
Quando la percentuale scende al 15% o sotto, lo script mostra un avviso:
Unita D: - Totale: 931.51 GB - Libero: 84.27 GB - Spazio libero: 9% [AVVISO] D: e quasi piena.
Il valore visualizzato è una percentuale arrotondata all'intero più vicino. Per questo motivo, un disco vicino alla soglia può apparire al 15% anche se il valore non arrotondato è leggermente superiore o inferiore.
Come modificare la soglia e automatizzare il controllo
Per cambiare il limite di avviso, modifica questa riga:
set "SOGLIA=15"
Impostando 10, lo script segnalerà soltanto le unità con il 10% o meno di spazio libero. Un valore come 20 anticipa l'avviso e offre più tempo per eliminare file temporanei, spostare archivi o aumentare la capacità del disco.
Il codice di uscita rende lo script adatto anche alle Utilità di pianificazione di Windows. Il valore 0 indica un controllo regolare, mentre il valore 1 segnala che almeno un'unità ha raggiunto la soglia. Questa distinzione può essere utilizzata da un altro programma di monitoraggio per generare una notifica.
Per automatizzare l'esecuzione, apri Utilità di pianificazione dal menu Start e seleziona Crea attività di base. Scegli una frequenza, come giornaliera o all'accesso dell'utente, quindi nella sezione Avvia programma indica il percorso completo del file .bat. Se il percorso contiene spazi, Utilità di pianificazione lo gestisce normalmente quando viene selezionato tramite Sfoglia.
Limiti dello script e controlli da fare
Lo script batch controllo spazio disco Windows misura lo spazio libero del volume, non la dimensione delle singole cartelle. Se l'unità è quasi piena, per individuare i file responsabili servono strumenti aggiuntivi come Impostazioni > Sistema > Archiviazione oppure programmi di analisi dello spazio su disco.
Il comando PowerShell considera soltanto le unità con Size maggiore di zero. Questa condizione evita divisioni per zero e impedisce che volumi non pronti vengano interpretati come dischi pieni.
Su Windows 10 e Windows 11, Get-CimInstance appartiene a Windows PowerShell 5.1, normalmente presente nel sistema. Windows PowerShell 5.1 e PowerShell 7 sono prodotti distinti: il file usa powershell.exe, quindi richiama l'ambiente integrato in Windows invece di richiedere l'installazione di PowerShell 7.
Per verificare la documentazione ufficiale della classe utilizzata, puoi consultare la pagina Microsoft relativa a Win32_LogicalDisk. Il controllo resta locale e non invia i dati dei dischi a servizi esterni.
Uno script batch controllo spazio disco Windows è sufficiente per ricevere avvisi locali prima che un volume esaurisca lo spazio.
Potrebbe interessarti anche:
- Windows Update bloccato allo 0 Windows 11: script PowerShell
- Spooler di stampa bloccato Windows 11: script CMD
- Icona link esterni WordPress CSS: tutorial pratico
- Avviso modulo WordPress JavaScript: tutorial sicuro
FAQ
No. Il filtro DriveType=3 include le unità locali fisse e normalmente esclude le unità rimovibili USB.
Sì. Lo script utilizza powershell.exe e Get-CimInstance, disponibili normalmente in Windows 11, comprese le versioni recenti.
Il file .bat mostra l'avviso nella console e restituisce il codice di uscita 1. Per inviare email serve collegarlo a un sistema esterno di monitoraggio o a uno script PowerShell dedicato.
Il codice 1 indica che almeno un'unità locale ha una percentuale di spazio libero uguale o inferiore alla soglia configurata.
Il codice fornito confronta la percentuale di spazio libero. Per usare una soglia in gigabyte occorre modificare il calcolo PowerShell e il confronto nel blocco batch.
Altri articoli di questa serie:
- Script batch ripristino rete Windows: DNS e TCP/IP
- Script CMD per pulire Windows Update e riavviare i servizi
- Script batch riparazione file sistema Windows: tutorial
- Script CMD backup cartelle Windows con Robocopy
- Script batch pulizia file temporanei Windows: guida sicura
- Script cmd controllo servizi Windows: rapporto
- Script CMD: trova i file più grandi in Windows
- Script batch controllo disco CHKDSK: salva il report
- Script CMD: punto di ripristino Windows in un clic
