Lo strumento Xcopy, che sta per copia estesa, è un popolare utility a riga di comando per copiare grandi quantità di dati in Windows. Rispetto al tradizionale comando copy
, Xcopy offre più funzionalità e opzioni che ti permettono di avere un maggiore controllo durante la copia o lo spostamento di file e cartelle.
In questa guida, imparerai come utilizzare Xcopy per vari scenari di copia file. Dalla copia di un singolo file, a quella di più directory, all’applicazione di filtri o esclusioni e altro ancora. Alla fine, avrai acquisito le conoscenze necessarie per utilizzare Xcopy nelle tue attività quotidiane di copia file.
Iniziamo!
Prerequisiti
Per seguire gli esempi di questa guida, avrai bisogno di quanto segue.
- A Windows (server or client) computer. Xcopy comes built-in to Windows, and you don’t need to download anything else. This guide will use Windows 10 Build 1909.
- Xcopy funziona nel prompt dei comandi o in PowerShell, e questo articolo assume che tu abbia già uno di questi aperti.
Comprensione del comando Xcopy
Xcopy è un’utilità a riga di comando, disponibile di default a partire da Windows 98. Puoi trovare questo strumento nella cartella %WINDIR%\system32 con il nome eseguibile xcopy.exe
.
Rispetto al comando di Windows copy
, Xcopy è molto più efficiente nella copia di file e directory. Inoltre, Xcopy offre più opzioni che lo rendono più personalizzabile e permettono di controllare il comportamento della copia dei file.
Vantaggi
Ci sono diversi vantaggi nell’utilizzare Xcopy che imparerai man mano che procedi in questa guida. Di seguito sono elencati alcuni dei vantaggi nell’utilizzare Xcopy.
- Operazione di copia più veloce su grandi insiemi di file e directory.
- Semplifica il rilascio delle applicazioni.
- Può replicare la struttura della directory di origine così com’è.
- Copia i file mantenendo le informazioni sul proprietario e le liste di controllo degli accessi (ACL).
- Copia e sovrascrive i file di sola lettura.
- Può escludere i file in base al nome del file, all’estensione o al percorso.
- Può identificare i file aggiornati, il che è utile per i backup differenziali.
- Integrabile e utilizzabile con script.
Limitazioni
Anche se Xcopy è fantastico, non è privo di limitazioni. Anche se queste limitazioni potrebbero non essere un ostacolo insormontabile, è bene conoscerle prima di iniziare.
- Non può copiare file aperti.
- Nessun supporto per il servizio di copia shadow del volume di Windows (VSS). Questa mancanza di supporto VSS rende Xcopy non adatto per il backup di volumi del sistema operativo in uso.
- Errore di memoria insufficiente quando la lunghezza del percorso più il nome del file supera i 254 caratteri.
Xcopy Riferimento alla sintassi
Xcopy ti permette di eseguire diverse operazioni di copia di file e cartelle. Ma prima, dovrai comprendere la sua sintassi e le opzioni. Ci sono molte opzioni che modificano il modo in cui Xcopy opera. Per aiutarti a capire queste opzioni, le tabelle che seguono le copriranno in dettaglio.
La prima designazione del percorso si riferisce ai file di origine; la seconda designazione del percorso si riferisce ai file di destinazione.
[origine]
– Percorso per il/i file da copiare (accetta caratteri jolly). Dovresti specificare il drive, il percorso e i file che desideri copiare.[destinazione]
– Percorso per il/i nuovi file. Se non specifici il percorso di destinazione, il comando copierà i file nello stesso percorso dell’origine.[opzioni]
– Può essere una qualsiasi delle seguenti opzioni nelle tabelle sottostanti. Puoi anche visualizzare queste opzioni eseguendo il comandoxcopy /?
o visitando la documentazione online di Xcopy.
Opzioni di origine
Switch | Explanation |
/A | Copy files that have the archive attribute. |
/M | Copy files with the archive attribute set, then switches off the archive attribute at the destination. Use this option when creating routine backups. |
/H | Copy hidden and system files and directories. The default value is N. |
/D:mm-dd-yyyy | Only copies that files with modification date on or after the given date. Without using this option, the command will copy only the files whose date/time is newer than the destination. |
/U | Only copies the files that already exists at the destination. |
/S | Copies folders and subfolders recursively excluding the empty one. |
/E | Copies folders and subfolders recursively including the empty one. |
/EXCLUDE:file1[+file2][+file3]… | Specify the text file(s) containing a list of strings to match absolute file paths to exclude. |
Opzioni di destinazione
Switch | Explanation |
/I | If the destination does not exist, using this option assumes that the destination is a directory and creates it. If you omit this option, the command prompts to confirm if the destination is a directory or a file. |
/R | Overwrites read-only files. |
/T | Creates a recursive folder structure at the destination without copying the files. This option does not include copying empty folders. To include empty folders, use this option together with the /E option. |
/K | Preserves the file attributes during the copy. Otherwise, the command will reset read-only attributes. |
/N | Copies files using their short file names. |
/O | Copies files including ownership and access control list (ACL) information. |
/X | Copies files including file audit settings and ACL information (implies using /O). |
Opzioni di copia
Switch | Explanation |
/W | Prompts for a key press before the copy process can start. |
/P | Prompts (Y/N) before creating each file. |
/Y | Suppresses the confirmation to overwrite destination file if exists. |
/-Y | Prompts to confirm overwriting an existing destination file. |
/V | Verifies that the source and destination file sizes are identical. |
/C | Ignores errors and forces the command to continue copying. |
/B | Copies only the symbolic link but not the link target file. |
/G | Copies encrypted files to a destination that does not support encryption. |
/J | Copies files without using the buffer. This switch useful when copying very large files. |
/Q | Suppresses the display of file names while copying. |
/F | Displays the full source and destination file paths while copying. |
/L | Only displays which files to copy without copying them. This switch can be useful when testing Xcopy commands with multiple options to assess the expected result. |
/Z | Copies files in restartable mode. Using this option, the command gracefully stops copying files during network interruption. The copying will resume after re-estabslishing the network connection. |
Lavorare con Xcopy: Esempi di utilizzo
Ora che sei familiare con la sintassi e le opzioni di Xcopy, è il momento di iniziare ad utilizzarlo effettivamente combinando una o più opzioni insieme. Esplorerai molteplici scenari nelle sezioni seguenti per utilizzare Xcopy per copiare file e cartelle.
Elenco dei file da copiare
Se hai un file server contenente una grande quantità di file che vuoi copiare, magari in una posizione di backup, sarebbe ideale testare prima il tuo comando Xcopy. Una situazione in cui vorresti testare Xcopy è quando stai combinando diverse opzioni Xcopy.
Utilizzando l’opzione /L
con Xcopy, puoi simulare ciò che sarebbe successo quando hai emesso il comando elencando quali file avrebbe copiato. In questo modo, puoi confermare se il tuo comando copierà tutti i file che intendevi.
Copiare un Singolo File
L’operazione più basilare che puoi fare con Xcopy è copiare un file da una sorgente a una destinazione senza utilizzare alcuna opzione. Ad esempio, il comando qui sotto copierà un file di testo in una directory di destinazione, e il nome del file sarà lo stesso.
Puoi anche copiare il file sorgente e cambiare il nome del file di destinazione eseguendo il comando qui sotto.
Copiare File in una Nuova Cartella
Con Xcopy, puoi copiare file e creare la directory di destinazione al volo. Per farlo, devi aggiungere l’opzione /I
al comando Xcopy.
Ad esempio, il comando qui sotto copia i file dalla cartella C:\Workarea\Demo alla cartella D:\Workarea. Se la cartella di destinazione non esiste, Xcopy crea la cartella di destinazione usando l’opzione /I
.
Copiare Tutti i File e le Cartelle Ricorsivamente
Oltre a copiare file da una cartella all’altra, Xcopy ti permette anche di copiare cartelle e file ricorsivamente. E ci sono due modi in cui puoi fare una copia ricorsiva – con e senza cartelle vuote.
Per copiare tutti i file e le directory ignorando le directory vuote, aggiungi l’opzione /S
alla fine del comando Xcopy, come mostrato di seguito.
D’altra parte, per includere le directory vuote durante la copia ricorsiva, aggiungi invece l’opzione /E
al comando.
Inclusione di File Nascosti e di Sistema
Per impostazione predefinita, Xcopy non include file nascosti e di sistema nelle operazioni di copia. Ma se è necessario forzare Xcopy ad includere file nascosti e di sistema, aggiungi l’opzione /H
al comando.
Il comando seguente copia tutti i file in modo ricorsivo, inclusi file nascosti e di sistema. Questo comando ignora anche gli errori, crea le cartelle di destinazione e sovrascrive i file esistenti.
Preservare l’Attributo di File di Sola Lettura
Un altro attributo che Xcopy può gestire e preservare è l’attributo di sola lettura del file. Per impostazione predefinita, quando Xcopy copia un file di sola lettura, rimuove l’attributo di sola lettura del file alla destinazione. Per impedire a Xcopy di rimuovere l’attributo di sola lettura, aggiungi l’opzione /K
al comando.
Ad esempio, il comando seguente copia un file di sola lettura in un’altra posizione e il file di destinazione risultante avrà comunque un attributo di sola lettura. Questo comando sovrascriverà anche il file di destinazione se il file esiste.
Come effetto collaterale della preservazione del file come di sola lettura, Xcopy non può sovrascrivere lo stesso file in future operazioni di copia. Ma è possibile forzare Xcopy a sovrascrivere file di sola lettura aggiungendo l’opzione /R
.
Filtraggio dei File da Copiare
Supponiamo che ci siano più file nella cartella di origine e nelle sottocartelle che si desidera copiare. Xcopy consente di utilizzare caratteri jolly come filtro per selezionare quali file copiare.
Ad esempio, il comando di seguito copia solo i file con estensione .cs in modo ricorsivo dalla radice del disco C: alla radice del disco E:. Questo comando ignora anche gli errori e sovrascrive i file esistenti senza richiedere conferma.
Escludere file e cartelle dalla copia
A powerful feature of Xcopy is its ability to exclude files from the copy process. To use this feature, you can leverage the /EXCLUDE
switch. This switch accepts the names of the file(s) that contain the exclusion lists.
Per prima cosa, è necessario creare o avere un file contenente l’elenco degli elementi da escludere. Ad esempio, è possibile avere un file di testo chiamato Exclude.txt che contiene le seguenti voci. Come si può vedere, il file di esclusione può contenere nomi specifici di file, estensioni di file e cartelle come voci.
Per eseguire Xcopy con le esclusioni, eseguire il comando seguente e specificare il percorso completo del file di esclusione con l’opzione /EXCLUDE
. Questo comando utilizza il file C:\Workarea\XCopyDemo\Exclude.txt.
Il risultato? Xcopy viene eseguito per copiare i file ma salta i file xyz.txt, Exclude.txt, tutti i file con estensione .pdf e .png, e tutti i file nella cartella exclude.
Eseguire una copia differenziale
Quando si desidera eseguire il backup dei file da una posizione all’altra, Xcopy dispone di un’opzione che consente di eseguire una copia differenziale. Invece di copiare tutti i file, una copia differenziale copia solo i file in cui la data di modifica è successiva o uguale a una data specificata con l’opzione /D:m-d-y
.
Per esempio, per copiare solo i file con la data di modifica successiva al 01 aprile 2021, esegui il comando seguente. Inoltre, questo comando effettua una copia ricorsiva, ignora gli errori e sovrascrive i file esistenti nella destinazione.
Se non specifici una data con l’opzione /D
, Xcopy copierà solo i file di origine più recenti rispetto ai file di destinazione.
Copia dei file in base all’attributo di archiviazione
Tipicamente, i programmi di backup rimuovono l’attributo di archiviazione di un file dopo un’operazione di backup. Dopo la modifica di un file (cioè, modifica e salvataggio), Windows reimposta automaticamente l’attributo di archiviazione dei file.
Se crei uno script per il backup dei file usando Xcopy, puoi utilizzare l’attributo di archiviazione per decidere se copiare o eseguire il backup del file.
Per copiare i file con l’attributo di archiviazione, puoi sfruttare gli interruttori /A
e /M
. Quale di questi interruttori utilizzare dipende dal fatto che tu voglia preservare o meno l’attributo di archiviazione del file.
Il comando seguente esegue una copia ricorsiva solo dei file con l’attributo di archiviazione. I file di destinazione manterranno l’attributo di archiviazione dopo la copia grazie all’interruttore /A
.
In contrasto, per rimuovere l’attributo di archiviazione del file di origine dopo la copia nella destinazione, specifica l’interruttore /M
.
Conservazione delle informazioni sul proprietario del file e ACL.
Immagina di creare un backup di un’intera cartella di profilo. Ogni file potrebbe avere proprietari diversi o autorizzazioni uniche. Se dovessi ripristinare quei file, vorresti mantenere gli stessi proprietari e le stesse autorizzazioni intatte.
In questo modo, l’intero processo sembrerebbe senza soluzione di continuità e gli utenti avranno ancora lo stesso accesso ai file che avevano prima. Ma prima, è necessario assicurarsi di eseguire il backup di quei file mantenendo gli attuali proprietari e accessi.
Per copiare i file e mantenere le informazioni sul proprietario e ACL, aggiungi il parametro /O
al comando xcopy
, come mostrato di seguito.
Oltre a mantenere le informazioni sul proprietario e ACL, puoi anche includere le impostazioni di audit dei file. Copiare le impostazioni di audit può essere utile se la tua organizzazione applica oggetti di criteri di gruppo (GPO) per l’audit dei file.
Per includere le impostazioni di audit dei file durante la copia dei file con Xcopy, utilizza l’interruttore /X
. L’interruttore /X
implica anche l’interruttore /O
, quindi non è necessario utilizzare entrambi gli interruttori contemporaneamente.
Copiare file e cartelle tramite la rete
Non solo Xcopy può copiare file tra posizioni sullo stesso o su dischi diversi, ma può anche copiare file tramite la rete. Purtroppo, la copia dei file tramite la rete non è sempre affidabile. Le connessioni di rete possono subire brevi interruzioni e, in alcuni casi, una perdita totale di connessione.
Fortunatamente, è possibile eseguire Xcopy in modalità riavviabile. Significa che, anche se la copia si interrompe a causa di un errore di rete, la copia può riprendere dopo aver ristabilito la connessione di rete. Per eseguire Xcopy in modalità riavviabile, è necessario aggiungere lo switch /Z
al comando.
Ad esempio, il comando seguente esegue una copia file ricorsiva dalla cartella C:\Workarea a una posizione di rete. Il parametro /Z
fa sì che Xcopy venga eseguito in modalità riavviabile.
Utilizzando lo switch
/Z
, Xcopy visualizza anche il progresso della copia dei file in percentuale.
Copiare file utilizzando I/O non bufferizzato
Il buffering I/O corrisponde a come il sistema operativo bufferizza le letture e scritture su disco nella cache del sistema di file. Sebbene il buffering acceleri le letture e scritture successive sullo stesso file, ha un costo. Di conseguenza, l’I/O non bufferizzato (o una copia di file grezzi) è il metodo preferito per copiare un file di grandi dimensioni.
Questo metodo di copia riduce l’overhead della cache del file system e impedisce che la cache del file system venga facilmente svuotata con grandi quantità di dati sui file.
Per copiare file di grandi dimensioni utilizzando I/O non bufferizzato, è possibile aggiungere l’interruttore /J
al comando Xcopy, come mostrato di seguito.
Copia dei file con verifica
Come per qualsiasi altro compito, la copia dei file potrebbe non restituire sempre risultati al 100% di successo. Alcuni file potrebbero danneggiarsi durante il trasferimento anche se non ci sono errori visibili.
Con Xcopy, è possibile utilizzare l’interruttore /V
per verificare che i file di destinazione e di origine siano identici in base alle loro dimensioni dopo la copia. File di origine e di destinazione identici indicano che la copia è riuscita e che il file è intatto.
Il comando seguente copia tutti i file da C:\Workarea\XCopyDemo
a C:\Workarea\Backup
e verifica ciascun file utilizzando l’interruttore /V
. L’interruttore /F
visualizza il percorso completo dei file di origine e di destinazione.
Copia dei file criptati
Xcopy supporta anche la copia di file criptati su destinazioni che non supportano la crittografia. Utilizzando l’interruttore /G
, Xcopy copia i file di origine criptati e crea file di destinazione decriptati.
Questa modalità di copia è utile, specialmente quando si esegue il backup di file criptati su condivisioni di rete o volumi non Sistema di File Criptato (EFS).
Copia delle strutture delle cartelle
In alcune situazioni, gli script o i programmi di backup potrebbero richiederti di predisporre la destinazione prima di copiare i file dalla sorgente. Quando necessario, puoi utilizzare Xcopy per replicare la struttura della cartella di origine senza il contenuto.
Per farlo, esegui il comando Xcopy con lo switch /T
. Utilizzando lo switch /T
, Xcopy copierà solo la struttura dell’albero delle directory nella destinazione ma ignorerà le directory vuote.
Puoi anche aggiungere lo switch /E
al comando per includere le directory vuote, come mostrato nell’esempio di comando qui sotto.
Errori comuni
Se qualcosa può andare storto, probabilmente andrà. Lo stesso vale quando si copiano i file, indipendentemente dal volume. Di seguito sono riportati gli errori comuni di Xcopy che potresti incontrare.
Numero di parametri non valido
Questo errore si verifica tipicamente quando il comando inserito contiene caratteri spazio. Per evitare questo errore, quando si digita un percorso di origine o destinazione che contiene caratteri spazio, si dovrebbe circondare il percorso con virgolette.
Ad esempio, se il percorso è C:\Documents and Settings, inserisci il percorso come “C:\Documents and Settings”
Impossibile eseguire una copia ciclica
Questo errore si verifica se la directory di origine che stai copiando include anche la directory di destinazione. In questo caso, Xcopy entrerebbe in un ciclo, causando un errore. Quando si utilizza Xcopy, la destinazione deve essere una directory o un disco completamente indipendente se si copiano tutte le directory e le sottodirectory.
Errore di analisi
Questo errore si verifica quando si digita una sintassi errata o non valida nel comando. Ad esempio, potresti incontrare questo errore quando hai specificato il percorso tra virgolette ma mancano le virgolette di chiusura.
Ad esempio, il comando sottostante ha un carattere di virgolette doppie di chiusura mancante nel percorso di destinazione.
Codici di uscita
Xcopy restituisce un codice di uscita per un’operazione, che puoi utilizzare per determinare se l’operazione è stata eseguita correttamente. I codici di uscita sono utili, soprattutto se il tuo compito o script esegue azioni in base al codice di uscita ricevuto.
La shell di comando salva i codici di uscita nella variabile %ErrorLevel%
. Il tuo codice può quindi esaminare il valore di questa variabile per determinare l’esito dell’operazione Xcopy.
Di seguito è riportata una tabella che elenca tutti i codici di uscita di Xcopy.
Exit Code | Purpose |
0 | This exit code means that there were no errors. |
1 | This exit code means that Xcopy did not find any files to copy. |
2 | This exit code means that the Xcopy was terminated by pressing CTRL+C. |
4 | This exit code means that an initialization error happened either because of insufficient memory or disk space or because you’ve entered invalid syntax. |
5 | This exit code means that there was a disk write error. |
Scripting con Xcopy
Oltre all’uso interattivo di Xcopy, puoi sfruttarne i vantaggi meglio se lo usi per automatizzare compiti con script. Di seguito sono riportati un paio di esempi che mostrano come puoi utilizzare Xcopy negli script.
Script batch di Xcopy per copiare dati con gestione degli errori
Questo esempio di script batch copia tutti i file in modo ricorsivo con logica di gestione degli errori. In base all’errore o al codice di uscita, lo script restituisce un messaggio che mostra il motivo dell’errore.
Per creare il file batch, apri un editor di testo o di codice a tua scelta, copia il codice sottostante, incollalo nel tuo editor e salva il file come copycomplete.bat.
Successivamente, per eseguire lo script, invoca il suo nome nel prompt dei comandi o in PowerShell, seguito dalle cartelle di origine e destinazione.

Script Batch Xcopy per Spostare Dati
Xcopy non ha una funzionalità integrata per spostare file e cartelle dalla sorgente alla destinazione. Tuttavia, come soluzione alternativa, puoi creare uno script che utilizzi Xcopy per copiare i file e successivamente li elimini dalla sorgente.
Il codice qui sotto copierà i file nella destinazione. E se il processo di copia avrà successo, lo script eliminerà i file dalla sorgente. Copia il codice qui sotto e salvalo in un nuovo file chiamato movefiles.bat.
Successivamente, per eseguire il file batch movefiles.bat, invoca il suo nome nel prompt dei comandi o in PowerShell seguito dai percorsi della sorgente e della destinazione, come hai fatto nell’esempio precedente.
Conclusioni
Se il tuo lavoro comporta la copia di file in blocco o la creazione di backup di file, Xcopy è un ottimo strumento per facilitare il tuo lavoro. Xcopy fornisce risultati precisi e veloci nella copia di file, con molte opzioni per personalizzare il suo comportamento in base alle tue esigenze.