Script batch: organizza i file per estensione

Uno script batch organizzare file per estensione permette di riordinare automaticamente una cartella di Windows creando una sottocartella per ogni tipo di file. Il file batch seguente riconosce l’estensione, crea la directory corrispondente e sposta al suo interno i file trovati nella cartella indicata. Lo script gestisce anche i file senza estensione, evita di spostare sé stesso e non sovrascrive i file con lo stesso nome già presenti nella destinazione. La procedura funziona con Windows 10 e Windows 11 senza installare programmi aggiuntivi.

Cosa fa lo script batch per organizzare i file

Lo script analizza esclusivamente i file presenti nella cartella principale indicata, senza entrare nelle sottocartelle già esistenti. Per ogni file viene utilizzata l’estensione, privata del punto iniziale, come nome della nuova cartella.

Un file chiamato fattura.pdf viene quindi spostato in PDF, mentre foto.jpg finisce nella cartella JPG. I file privi di estensione vengono trasferiti nella directory Senza_estensione.

Lo script batch organizzare file per estensione applica queste regole:

  • Crea automaticamente le sottocartelle mancanti.
  • Sposta soltanto i file, non le cartelle.
  • Ignora il file .bat che contiene il codice.
  • Non sostituisce un file con lo stesso nome già presente nella cartella di destinazione.
  • Organizza anche i file con estensioni mai utilizzate in precedenza.
  • Considera l’estensione finale: archivio.tar.gz viene inserito nella cartella GZ.

Le estensioni scritte con maiuscole e minuscole possono generare cartelle separate, perché JPG e jpg sono nomi distinti nel codice utilizzato. Per evitare questo comportamento, è consigliabile mantenere una grafia uniforme nei nomi delle estensioni oppure modificare lo script con regole specifiche.

Come creare lo script batch organizzare file per estensione

Passo 1: aprire un editor di testo

Apri Blocco note di Windows oppure un editor di testo semplice. Copia il codice seguente senza modificarne la punteggiatura:

@echo off
setlocal EnableExtensions DisableDelayedExpansion

set "CARTELLA=%~1"
if not defined CARTELLA set "CARTELLA=%CD%"

if not exist "%CARTELLA%." (
echo La cartella indicata non esiste.
pause
exit /b 1
)

pushd "%CARTELLA%" || exit /b 1

for %%F in (*) do (
if not exist "%%~fF." (
if /I not "%%~nxF"=="%~nx0" (
call :SpostaFile "%%~fF" "%%~nxF" "%%~xF"
)
)
)

popd
echo Operazione completata.
pause
exit /b 0

:SpostaFile
set "PERCORSO=%~1"
set "NOME=%~2"
set "ESTENSIONE=%~3"

if defined ESTENSIONE (
set "CARTELLA_EST=%ESTENSIONE:~1%"
) else (
set "CARTELLA_EST=Senza_estensione"
)

if not exist "%CARTELLA_EST%." md "%CARTELLA_EST%"

if exist "%CARTELLA_EST%%NOME%" (
echo Ignorato: "%NOME%" esiste gia nella cartella "%CARTELLA_EST%".
) else (
move /-Y "%PERCORSO%" "%CARTELLA_EST%" >nul
echo Spostato: "%NOME%" -^> "%CARTELLA_EST%"
)

exit /b

Il comando move /-Y mantiene attiva la richiesta di conferma in caso di sovrascrittura, mentre il controllo if exist impedisce normalmente di trasferire un file quando nella destinazione è già presente un elemento con lo stesso nome.

Passo 2: salvare il file con estensione BAT

In Blocco note seleziona File > Salva con nome. Inserisci un nome come OrganizzaFile.bat, scegli Tutti i file nel campo Salva come e imposta, se disponibile, la codifica ANSI o UTF-8.

Il nome deve terminare realmente con .bat, non con .bat.txt. Se l’estensione .txt è nascosta da Esplora file, apri Visualizza > Mostra > Estensioni nomi file in Windows 11, oppure la scheda Visualizza di Esplora file in Windows 10, per verificare il nome completo.

Passo 3: eseguire il file nella cartella da riordinare

Copia OrganizzaFile.bat nella cartella da ordinare e fai doppio clic sul file. Quando non viene fornito alcun percorso, lo script utilizza la cartella corrente, cioè quella in cui si trova il file batch.

Un metodo più flessibile consiste nel trascinare una cartella sopra OrganizzaFile.bat. In questo caso Windows passa automaticamente il percorso della cartella come primo argomento e lo script lavora al suo interno, anche se il file batch si trova in una posizione diversa.

Per esempio, trascinando la cartella C:UsersMarcoDownloads sul file batch, lo script crea le sottocartelle direttamente in Downloads.

Controlli da fare prima di spostare i file

Prima di eseguire uno script batch organizzare file per estensione, crea una copia della cartella originale oppure verifica che i file importanti siano salvati anche altrove. Lo script sposta i file con il comando di Windows move; non crea una copia indipendente e non offre una funzione automatica di annullamento.

È preferibile effettuare una prima prova su una cartella contenente file non importanti. Il codice non entra nelle sottocartelle, quindi le directory già presenti e il loro contenuto non vengono modificati.

Il file batch non sposta sé stesso perché confronta il proprio nome con ogni elemento trovato. Il controllo che verifica la presenza del percorso %%~fF. permette inoltre di distinguere le cartelle dai file, evitando di trattare una directory come se fosse un documento con estensione.

I file con nomi contenenti caratteri particolari, soprattutto il punto esclamativo, possono richiedere una gestione più avanzata nei file batch. Per cartelle con nomi ordinari e file creati normalmente da Windows, il codice è adatto all’uso quotidiano.

Come modificare le cartelle create dallo script

Il nome della cartella deriva direttamente dall’estensione. Per questo motivo, documento.docx viene trasferito in DOCX, mentre presentazione.pptx viene trasferita in PPTX.

Per raccogliere più estensioni nella stessa directory, lo script deve essere modificato con regole dedicate. Ad esempio, per mettere sia i file jpg sia i file png nella cartella Immagini, occorre sostituire la logica che assegna il valore di CARTELLA_EST con condizioni basate sull’estensione.

La versione proposta è volutamente generica: non contiene elenchi predefiniti di formati e può organizzare file PDF, immagini, archivi ZIP, documenti Office, file audio e qualsiasi altro elemento dotato di estensione. Questo comportamento evita di dover aggiornare il codice ogni volta che compare un nuovo formato.

Per mantenere l’ordine nel tempo, esegui nuovamente lo stesso file batch quando nella cartella principale arrivano nuovi documenti. Le sottocartelle già create vengono riutilizzate e i file con nomi duplicati vengono lasciati nella posizione originale.

Uno script batch organizzare file per estensione è quindi adatto soprattutto a cartelle di lavoro, Download e directory temporanee, dove molti formati diversi tendono ad accumularsi rapidamente.

Potrebbe interessarti anche:

FAQ

Sì, il file batch usa comandi disponibili sia in Windows 10 sia in Windows 11 e non richiede software aggiuntivo.

No. Lo script analizza soltanto i file presenti direttamente nella cartella indicata e non modifica le sottocartelle esistenti.

Il file viene ignorato e rimane nella cartella originale; lo script mostra un messaggio che segnala il duplicato.

Sì. Trascinando una cartella sul file .bat, Windows passa il relativo percorso allo script, che organizza i file nella cartella trascinata.

I file senza estensione vengono spostati nella sottocartella Senza_estensione.

Altri articoli di questa serie:

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