Script CMD backup cartelle Windows con Robocopy
Uno script cmd backup cartelle Windows Robocopy automatizza la copia di Documenti, Desktop, Download, Immagini, Musica e Video verso un disco esterno o una cartella di rete. Robocopy è incluso in Windows 10 e Windows 11 e registra file copiati, saltati, errori e tempi dell’operazione. Il metodo seguente usa un file .cmd personalizzabile, crea un registro separato per ogni esecuzione e interpreta correttamente i codici di uscita di Robocopy. La procedura evita la modalità /MIR, che può cancellare dal backup i file rimossi dalla cartella originale.
Cosa serve per creare il backup con Robocopy
Lo script funziona con il Prompt dei comandi di Windows 10, Windows 11 e con le versioni moderne di Windows Server che includono Robocopy. Per un backup affidabile è preferibile usare un disco diverso da quello del sistema, perché una copia salvata sulla stessa unità non protegge dai guasti del disco principale.
Prima di creare il file, prepara una destinazione come D:Backup. Se utilizzi un disco esterno, controlla in Esplora file la lettera assegnata all’unità e sostituiscila nello script. Una cartella di rete può essere indicata con un percorso UNC, per esempio NASBackupComputer.
Lo script usa queste opzioni di Robocopy:
/Ecopia tutte le sottocartelle, comprese quelle vuote./ZBusa la modalità riavviabile e, quando necessario, tenta la modalità di backup./COPY:DATcopia dati, attributi e date dei file./DCOPY:DATcopia dati, attributi e date delle cartelle./XJesclude i punti di giunzione, riducendo il rischio di percorsi circolari./R:2ripete due volte la copia di un file che genera errore./W:5attende cinque secondi tra un tentativo e l’altro./TEEmostra il risultato nella finestra del Prompt e nel registro./LOG+:aggiunge l’output al file di log senza cancellare quello già presente.
L’opzione /E non elimina dalla destinazione i file che non esistono più nella sorgente. Questa scelta è più prudente per un backup personale, perché conserva anche file eventualmente rimossi per errore.
Come creare lo script CMD per il backup
Passo 1: aprire il Blocco note
Apri il Blocco note di Windows e incolla il codice seguente. Il comando PowerShell inserito nello script serve soltanto a creare un nome di registro con data e ora nel formato AAAAmmgg_OOMMSS.
@echo off
setlocal
set "BACKUPROOT=D:Backup%USERNAME%"
set "LOGDIR=%BACKUPROOT%Log"
set "ERRORE=0"
if not exist "%BACKUPROOT%" md "%BACKUPROOT%"
if not exist "%LOGDIR%" md "%LOGDIR%"
for /f %%A in ('powershell.exe -NoProfile -Command "Get-Date -Format yyyyMMdd_HHmmss"') do set "STAMP=%%A"
set "LOG=%LOGDIR%backup_%STAMP%.log"
echo ============================================== >> "%LOG%"
echo Avvio backup: %DATE% %TIME% >> "%LOG%"
echo Computer: %COMPUTERNAME% >> "%LOG%"
echo Utente: %USERNAME% >> "%LOG%"
echo Destinazione: %BACKUPROOT% >> "%LOG%"
echo ============================================== >> "%LOG%"
call :COPIA "%USERPROFILE%Documents" "%BACKUPROOT%Documenti"
call :COPIA "%USERPROFILE%Desktop" "%BACKUPROOT%Desktop"
call :COPIA "%USERPROFILE%Downloads" "%BACKUPROOT%Download"
call :COPIA "%USERPROFILE%Pictures" "%BACKUPROOT%Immagini"
call :COPIA "%USERPROFILE%Music" "%BACKUPROOT%Musica"
call :COPIA "%USERPROFILE%Videos" "%BACKUPROOT%Video"
echo. >> "%LOG%"
echo Fine backup: %DATE% %TIME% >> "%LOG%"
if "%ERRORE%"=="1" (
echo Backup terminato con almeno un errore.
echo Consultare il registro: %LOG%
exit /b 1
) else (
echo Backup completato senza errori bloccanti.
echo Registro salvato in: %LOG%
exit /b 0
)
:COPIA
echo. >> "%LOG%"
echo ==== Copia da "%~1" a "%~2" ==== >> "%LOG%"
if not exist "%~1" (
echo SORGENTE NON TROVATA: "%~1" >> "%LOG%"
set "ERRORE=1"
exit /b
)
robocopy "%~1" "%~2" /E /ZB /COPY:DAT /DCOPY:DAT /XJ /R:2 /W:5 /TEE /LOG+:"%LOG%"
if errorlevel 8 set "ERRORE=1"
exit /b
Passo 2: adattare la destinazione
Modifica la riga seguente sostituendo D:Backup con il percorso dell’unità o della cartella di destinazione:
set "BACKUPROOT=D:Backup%USERNAME%"
La variabile %USERNAME% crea una sottocartella con il nome dell’utente Windows. Se il computer è utilizzato da una sola persona, puoi anche impostare un percorso fisso come D:BackupPC-Ufficio.
Le cartelle personali possono avere percorsi diversi se sono state spostate manualmente o sincronizzate con OneDrive. In quel caso modifica le righe call :COPIA, inserendo il percorso reale visualizzato nelle proprietà della cartella. Per esempio, una cartella Documenti sincronizzata può trovarsi in %USERPROFILE%OneDriveDocuments.
Passo 3: salvare il file con estensione .cmd
Nel Blocco note seleziona File > Salva con nome. Imposta un nome come backup_personale.cmd, scegli Tutti i file nel campo del tipo e usa una codifica come UTF-8. Non salvare il file come backup_personale.cmd.txt, perché in quel caso Windows non lo eseguirà come script.
Avvia il file con un doppio clic per un backup normale. Se alcune cartelle contengono file protetti o vengono negati gli accessi, fai clic con il pulsante destro sul file .cmd e seleziona Esegui come amministratore.
Come leggere i registri creati da Robocopy
Il file di log viene salvato nella sottocartella Log della destinazione, con un nome simile a backup_20260812_153000.log. Ogni esecuzione produce un registro separato, quindi è possibile confrontare le operazioni di giorni diversi senza sovrascrivere i risultati precedenti.
Robocopy usa codici di uscita diversi da quelli normalmente associati ai programmi Windows. I codici da 0 a 7 indicano generalmente un’esecuzione riuscita o differenze gestite tra sorgente e destinazione; un codice pari o superiore a 8 indica almeno un errore di copia. Per questo lo script controlla errorlevel 8 invece di considerare ogni valore diverso da zero come un fallimento.
Nel registro puoi trovare il numero di file copiati, aggiornati, saltati o falliti, oltre alla velocità e alla durata dell’operazione. Una voce ERROR 2 può indicare un file non trovato durante la scansione, mentre errori di accesso possono dipendere da permessi, file in uso o destinazioni non disponibili.
La documentazione ufficiale di Robocopy descrive tutte le opzioni supportate dal comando e i relativi codici di uscita.
Come rendere il backup più sicuro e automatico
Il file .cmd copia i contenuti nella destinazione senza creare versioni storiche dei file modificati. Se un file viene sovrascritto nella cartella di backup, la versione precedente non è conservata. Per una protezione maggiore puoi destinare ogni esecuzione a una cartella con data, ma questa modifica richiede di aggiungere %STAMP% al percorso di destinazione, per esempio:
set "BACKUPROOT=D:Backup%USERNAME%%STAMP%"
In questo caso la variabile STAMP deve essere valorizzata prima di impostare BACKUPROOT. La configurazione crea una copia separata per ogni avvio, ma occupa più spazio e richiede una gestione periodica delle versioni obsolete.
Non usare /MIR senza aver verificato attentamente sorgente e destinazione. /MIR rende la destinazione uno specchio della sorgente e può eliminare dal backup file che sono stati rimossi dalla cartella personale.
Per automatizzare l’esecuzione puoi usare Utilità di pianificazione di Windows. Crea un’attività che avvii il file .cmd dopo l’accesso o a un orario stabilito, attiva Esegui con i privilegi più elevati quando necessario e seleziona un account con accesso alla destinazione. Prima di affidarti all’automazione, esegui manualmente lo script e controlla il registro.
Un backup è realmente utile soltanto se può essere ripristinato. Copia periodicamente alcuni file dalla destinazione a una cartella di prova e verifica che nomi, date e contenuti siano corretti.
Uno script cmd backup cartelle Windows Robocopy offre copie ripetibili e registri dettagliati, ma la sicurezza dipende anche dalla destinazione e dai test di ripristino.
Potrebbe interessarti anche:
- Windows Update bloccato allo 0 Windows 11: script PowerShell
- Accesso negato cartella Windows 11 icacls: soluzione
- Perché Usare il Prompt dei Comandi di Windows al Posto dell'Interfaccia Grafica
- Salva i tuoi Driver di Windows PRIMA che sia troppo tardi! Ecco come farlo in pochi minuti
FAQ
Sì, Robocopy è incluso in Windows 10 e Windows 11 e può essere eseguito dal Prompt dei comandi o da uno script .cmd.
No, l’opzione /E copia le cartelle senza sincronizzare le eliminazioni. Lo script non usa /MIR, che potrebbe rimuovere file dalla destinazione.
I codici da 0 a 7 di Robocopy indicano normalmente un’esecuzione riuscita con differenze o file copiati. I codici pari o superiori a 8 indicano errori di copia.
Sì, sostituisci `
No, vengono incluse soltanto le cartelle indicate nello script. Se Documenti o Desktop sono sincronizzati con OneDrive, devi inserire nei comandi call :COPIA i percorsi effettivi.
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 batch pulizia file temporanei Windows: guida sicura
- Script cmd controllo servizi Windows: rapporto
- Script batch controllo spazio disco Windows: avvisi
- 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
