Script CMD: trova i file più grandi in Windows
Uno script CMD per la ricerca dei file grandi in Windows può analizzare una cartella, ordinare i risultati dal file più pesante al più leggero e salvare l’elenco in un documento di testo. Il Prompt dei comandi non offre comandi nativi pratici per ordinare ricorsivamente i file in base alla dimensione, quindi lo script utilizza PowerShell, già incluso in Windows 10 e Windows 11. La procedura funziona anche su sottocartelle e considera i file nascosti quando i permessi lo consentono. Il risultato contiene dimensione in byte, dimensione approssimativa in megabyte e percorso completo.
Come funziona lo script CMD per cercare file grandi
Il file .cmd riceve come parametro la cartella da analizzare. Se non viene indicata alcuna cartella, lo script esamina la directory da cui viene avviato.
La ricerca viene eseguita dal comando PowerShell Get-ChildItem, che individua i file con -File e attraversa le sottocartelle con -Recurse. L’opzione -Force include anche gli elementi nascosti, mentre -ErrorAction SilentlyContinue evita che un singolo percorso protetto interrompa l’intera scansione.
PowerShell ordina gli elementi con Sort-Object Length -Descending, usando la proprietà Length, espressa in byte. Lo script mostra i risultati nella console e crea il file elenco_file_grandi.txt direttamente nella cartella analizzata.
Il seguente codice è un file CMD valido, anche se delega a PowerShell la parte di ricerca e ordinamento. Questa scelta è più affidabile rispetto a una soluzione basata soltanto sui comandi storici del Prompt dei comandi.
Come creare il file .cmd
Passo 1: aprire un editor di testo
Apri Blocco note di Windows, oppure un editor come Notepad++. Incolla il codice seguente senza modificare le virgolette o i caratteri di continuazione ^.
@echo off
setlocal
set "ROOT=%~1"
if not defined ROOT set "ROOT=%CD%"
set "OUT=%ROOT%elenco_file_grandi.txt"
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command ^
"$root = [Environment]::ExpandEnvironmentVariables($env:ROOT); ^
$out = [Environment]::ExpandEnvironmentVariables($env:OUT); ^
if (-not (Test-Path -LiteralPath $root -PathType Container)) { ^
Write-Error ('Cartella non trovata: ' + $root); ^
exit 2 ^
}; ^
$files = Get-ChildItem -LiteralPath $root -File -Recurse -Force -ErrorAction SilentlyContinue | ^
Sort-Object -Property Length -Descending; ^
'Bytes`tDimensione_MB`tPercorso' | Set-Content -LiteralPath $out -Encoding UTF8; ^
$files | ForEach-Object { ^
'{0}`t{1:N2}`t{2}' -f $_.Length, ($_.Length / 1MB), $_.FullName ^
} | Add-Content -LiteralPath $out -Encoding UTF8; ^
$files | Select-Object FullName, Length | Format-Table -AutoSize"
Salva il file con un nome come trova-file-grandi.cmd. Nella finestra di salvataggio imposta Tipo file su Tutti i file, così Blocco note non aggiungerà automaticamente l’estensione .txt.
Passo 2: scegliere la cartella di lavoro
Puoi salvare trova-file-grandi.cmd sul desktop oppure in una cartella dedicata agli script. Il percorso dello script non deve coincidere con la cartella che vuoi analizzare, anche se questa configurazione è possibile.
Il file generato si chiama elenco_file_grandi.txt. Il documento contiene una riga per ogni file trovato e usa il carattere di tabulazione come separatore, quindi può essere aperto anche con Microsoft Excel o LibreOffice Calc.
Come eseguire la ricerca dei file più pesanti
Passo 1: analizzare la cartella corrente
Apri una finestra del Prompt dei comandi nella cartella che vuoi controllare e avvia lo script senza parametri:
trova-file-grandi.cmd
In questo caso %CD% identifica la directory corrente. La console visualizza i percorsi trovati in ordine decrescente di dimensione, mentre il file di testo viene salvato nella stessa cartella.
Passo 2: indicare un percorso specifico
Per analizzare un’altra directory, passa il percorso tra virgolette. Le virgolette sono necessarie quando il nome contiene spazi.
trova-file-grandi.cmd "C:UsersNomeUtenteDownloads"
Per controllare l’intero disco di sistema puoi usare:
trova-file-grandi.cmd "C:"
La scansione di C: può richiedere tempo e produrre errori su cartelle riservate a Windows, al sistema operativo o ad altri utenti. Gli errori di accesso vengono ignorati e i file non leggibili non entrano nell’elenco.
Passo 3: controllare il file prodotto
Al termine dell’elaborazione, apri elenco_file_grandi.txt con Blocco note. Ogni riga include:
- La dimensione esatta in byte.
- La dimensione convertita in megabyte con due cifre decimali.
- Il percorso completo del file.
- L’ordinamento dal file più grande a quello più piccolo.
Il primo elemento dell’elenco è quindi il file più pesante tra quelli accessibili nella cartella scelta. La dimensione in megabyte è calcolata dividendo i byte per 1.048.576, il valore usato da PowerShell per l’unità MB.
Personalizzare lo script CMD per la ricerca dei file grandi
Per limitare il risultato ai primi file più grandi, modifica la riga che ordina i risultati aggiungendo Select-Object -First 20:
$files = Get-ChildItem -LiteralPath $root -File -Recurse -Force -ErrorAction SilentlyContinue | Sort-Object -Property Length -Descending | Select-Object -First 20
Nel file .cmd, però, questa modifica deve essere inserita mantenendo i caratteri ^ alla fine delle righe, perché il Prompt dei comandi usa ^ per continuare un comando sulla riga successiva.
Se vuoi cercare soltanto alcuni tipi di file, puoi aggiungere il parametro -Filter. Per esempio, il comando seguente considera esclusivamente i file ISO:
Get-ChildItem -LiteralPath $root -File -Recurse -Force -Filter *.iso
Per individuare i video puoi usare un filtro per estensione, ma -Filter gestisce un solo modello alla volta. Per più estensioni è preferibile filtrare dopo la ricerca:
$files = Get-ChildItem -LiteralPath $root -File -Recurse -Force -ErrorAction SilentlyContinue |
Where-Object { $_.Extension -in '.mp4','.mkv','.avi' } |
Sort-Object -Property Length -Descending
Il comando Where-Object permette di applicare condizioni più precise, come escludere file temporanei o cercare soltanto elementi modificati in un determinato periodo.
Limiti e sicurezza della scansione
Lo script non elimina, sposta o modifica i file: legge i metadati e scrive l’elenco dei risultati. L’opzione -ExecutionPolicy Bypass vale soltanto per l’istanza PowerShell avviata dallo script e non modifica in modo permanente i criteri di esecuzione di Windows.
La scansione può non includere file protetti se il Prompt dei comandi non dispone dei permessi necessari. Per una ricerca più estesa, avvia il Prompt dei comandi con Esegui come amministratore, ma usa questa modalità soltanto quando conosci la cartella che stai analizzando.
Il file elenco_file_grandi.txt viene creato dopo la raccolta dei risultati, quindi non viene normalmente incluso nella scansione stessa. Prima di cancellare un file voluminoso, verifica sempre che non appartenga a Windows, a un’applicazione installata o a un archivio importante.
Per informazioni sui parametri usati dallo script è disponibile la documentazione Microsoft di Get-ChildItem.
Lo script cmd ricerca file grandi Windows e produce un elenco ordinato utilizzabile direttamente per individuare cosa occupa spazio sul disco.
Potrebbe interessarti anche:
- Il file nascosto di Windows che controlla le tue cartelle: ecco cosa devi sapere su desktop.ini!
- SFC trova file danneggiati continuamente: CBS.log
- Evidenziare la ricerca WordPress con JavaScript
- Barra ricerca WordPress HTML CSS compatta nell’header
FAQ
Sì. Lo script utilizza Windows PowerShell, normalmente incluso sia in Windows 10 sia in Windows 11.
Sì. Avvia lo script passando il percorso dell’unità, ad esempio `trova-file-grandi.cmd "
I file possono essere esclusi quando l’account non dispone dei permessi di lettura o quando la cartella è protetta. Gli errori vengono ignorati per consentire alla scansione di proseguire.
No. Lo script esegue soltanto una lettura delle dimensioni e crea un elenco di testo; nessun file viene modificato o eliminato.
Sì. Aggiungi Select-Object -First 20 dopo l’ordinamento PowerShell, mantenendo la sintassi con i caratteri ^ nel file CMD.
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 batch controllo spazio disco Windows: avvisi
- Script batch controllo disco CHKDSK: salva il report
- Script CMD: punto di ripristino Windows in un clic
