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:

  • /E copia tutte le sottocartelle, comprese quelle vuote.
  • /ZB usa la modalità riavviabile e, quando necessario, tenta la modalità di backup.
  • /COPY:DAT copia dati, attributi e date dei file.
  • /DCOPY:DAT copia dati, attributi e date delle cartelle.
  • /XJ esclude i punti di giunzione, riducendo il rischio di percorsi circolari.
  • /R:2 ripete due volte la copia di un file che genera errore.
  • /W:5 attende cinque secondi tra un tentativo e l’altro.
  • /TEE mostra 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:

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:

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