Menu Fermer

Comment utiliser xcopy sur Windows avec 13 exemples

L’outil XCOPY (Extended Copy), pour copie étendue, est un utilitaire de ligne de commande populaire (commande CMD) pour copier des quantités massives de données sous Windows.
Comparé à la commande de copie traditionnelle, XCopy a plus de fonctionnalités et de commutateurs qui vous donnent un meilleur contrôle lors de la copie ou du déplacement des fichiers et des dossiers.
C’est donc la commande à privilégier pour copier des données sur Windows même si Robocopy plus moderne est apparue.

Dans ce guide, je vous apprends à utiliser XCopy pour divers scénarios de copie de fichiers en invite de commandes. De la copie d’un seul fichier, plusieurs répertoires, appliquant des filtres ou des exclusions, et plus encore. À la fin, vous aurez acquis les connaissances pour utiliser XCopy dans vos tâches de copie de fichiers quotidiennes.

Comment utiliser xcopy sur Windows

La syntaxe de xcopy

XCopy est une commande intégrée sur le système d’exploitation Windows qui a des fonctionnalités avancées que la commande de copie de base. Les fonctionnalités supplémentaires XCopy sont répertoriées ci-dessous.

  • Copie plus rapide de l’opération sur de grands ensembles de fichiers et répertoires
  • Simplifie le déploiement des applications
  • Peut reproduire la structure du répertoire source tel quel
  • Copie les fichiers tout en conservant les informations du propriétaire et de la liste d’accès (ACL).
  • Copie et écrasez les fichiers en lecture seule
  • Peut exclure des fichiers en fonction du nom de fichier, de l’extension ou du chemin
  • Aide à identifier les fichiers mis à jour (basés sur des attributs d’archives ou en fonction d’une date de coupure donnée), il est donc utile pour les besoins de sauvegarde incrémentiels ou différentielles
  • Capable de copier tous les fichiers, y compris les sous-répertoires récursivement et peut reproduire la structure du répertoire source tel quel via une option récursive
  • S’intègre et utilisable avec des scripts

Sa syntaxe est :

xcopy [source] [destination] [OPTIONS]

ou

xcopy [OPTIONS] [source] [destination]
  • [Source] – Le chemin source à partir duquel le(s) fichier(s) puisse copier (accepte les caractères génériques). Vous devez spécifier le lecteur, le chemin d’accès et les fichiers que vous souhaitez copier
  • [Destination] – Le chemin d’emplacement de destination vers lequel les fichiers seront copier. Si vous ne spécifiez pas le chemin de destination, la commande copiera les fichiers sur le même chemin que la source
  • [Options] – peut être l’une des options suivantes dans les tableaux ci-dessous. Vous pouvez également afficher ces options en exécutant le xcopy /? commander ou visiter la documentation XCopy en ligne

Voici les paramètres et options :

/ECopie les répertoires et sous-répertoires, y compris les répertoires vides.
/CContinue la copie même si des erreurs se produisent.
/HCopie également les fichiers cachés et les fichiers systèmes.
/RRemplace les fichiers en lecture seule.
/SCopie les répertoires et sous-répertoires à l’exception des répertoires vides.
/TCrée la structure de répertoires mais ne copie pas les fichiers. N’inclut pas les répertoires ou sous-répertoires vides. /T /E incluent les répertoires et sous-répertoires vides.
/KCopie les attributs de fichiers. Xcopy normal réinitialise les attributs en lecture seule.
/UCopie seulement les fichiers existants déjà dans la destination.
/OCopie la propriété du fichier et les informations ACL.
/YSupprime l’invite à confirmer que vous souhaitez remplacer un fichier de destination existant.
/LAffiche les fichiers devant être copiés.
Les paramètres et options de xcopy
Les options et paramètres de la commande xcopy

Comment utiliser xcopy sur Windows avec des exemples

Copier les fichiers dans un nouveau dossier

Voici une utilisation des plus basiques pour copier des fichiers d’une source vers une destination :

xcopy C:\source C:\destination /I

Cela ne copierait que les fichiers immédiats dans le répertoire source vers la destination. Il ne copierait pas les fichiers des sous-répertoires. L’ajout du commutateur /I évitera la question à l’utilisateur «Le répertoire de destination spécifie un nom de fichier ou un nom de répertoire sur la cible».

Lister les fichiers copiés

Par défaut XCopy n’affiche pas les fichiers copiés.
Hors parfois, il est utile de pouvoir suivre la liste des fichiers copiés lorsque l’on a un doute sur l’utilisation de la commande.
Pour afficher les fichiers copiés, utilisez l’option /L :

XCOPY C:\source C:\destination /L

Copier un répertoire comprenant des fichiers et des sous-répertoires récursivement

Xcopy C:\source C:\destination /S /I /E

Par exemple, pour copier tous les fichiers de D:\data\document vers le dossier E:\NouveauDossier\documents, nous devons exécuter la commande ci-dessous.

Xcopy  D:\data\documents E:\NouveauDossier\documents /S /I /E

Cette commande crée le dossier E:\NouveauDossier\documents s’il n’existe pas déjà.
Elle crée également la même structure de répertoire dans le dossier de destination grâce à l’option /E. Si le dossier de destination existe déjà, vous n’avez pas besoin d’ajouter l’option /I.
Si le dossier n’existe pas et que vous ne spécifiez pas /I, vous serez invité à confirmer si la destination est un fichier ou un dossier. Cela entraînera des problèmes si vous souhaitez exécuter une copie sans surveillance ou automatisée des fichiers.

Copier des fichiers, y compris les fichiers cachés et système

La commande ci-dessus exclut les fichiers cachés et systèmes de la copie.
Si vous souhaitez également ces fichiers, vous devez ajouter l’option /H à votre commande. Alors la commande serait

Xcopy D:\data\documents E:\NouveauDossier\documents /S /I /E /H

L’option /E copie les sous-répertoires vides dans le dossier de destination.
Si vous ajoutez l’option /H, la commande copie également les fichiers cachés et système dans le dossier de destination.
Si vous essayez d’écraser un fichier existant, ajoutez l’option /Y afin que vous ne soyez pas invité à la confirmation pour écraser le fichier.

Copier les fichiers en fonction de l’attribut archive

Si vous souhaitez copier uniquement les fichiers qui ont un jeu d’attribut d’archives, vous pouvez utiliser les commutateurs /A et /M.
L’attribut archive indique si le fichier a été modifié depuis le moment où l’attribut a été réinitialisé.
La commande est :

Xcopy C:\source C:\destination /A /I /S

La commande ci-dessus conserve l’ensemble d’attributs d’archive; Il ne réinitialise pas l’attribut.

Si vous souhaitez réinitialiser l’attribut d’archive, vous pouvez utiliser /m au lieu de /a. La commande de ce cas serait :

Xcopy C:\source C:\destination /M /I /S

Copier des fichiers en fonction de la date modifiée (Sauvegarde différentielle)

Lorsque vous devez sauvegarder les fichiers d’un emplacement à un autre, xcopy a une option qui vous permet d’effectuer une sauvegarde différentielle. Au lieu de copier tous les fichiers, une sauvegarde différentielle ne copie que les fichiers où la date modifiée sur ou après une date que vous spécifiez au commutateur /D:jj-mm-aaaa

Xcopy /D:jj-mm-aaaa /I C:\source C:\destination

Par exemple, pour copier tous les fichiers du répertoire E:\Data qui sont modifiées le 1er Septembre 2022 ou après vers le dossier E:\Backup :

Xcopy /D:01-06-2022 /I E:\data E:\backup

Copier en conservant les informations sur le propriétaire du fichier et ACL

Pour copier des fichiers et conserver les informations du propriétaire et ACL, ajoutez le paramètre /O à la commande xcopy, comme indiqué ci-dessous.

XCOPY C:\source D:\destination /O /I /Y

En plus de garder les informations du propriétaire et de l’ACL, vous pouvez également inclure les paramètres d’audit des fichiers. La copie des paramètres d’audit peut être utile si votre organisation applique des objets de stratégie de groupe (GPO) pour auditer des fichiers.

Pour inclure les paramètres d’audit des fichiers lors de la copie de fichiers avec xcopy, utilisez le commutateur /X.
Le commutateur /X implique également le commutateur /O, vous n’avez donc pas à utiliser les deux commutateurs en même temps.

Copier de fichiers avec vérification

Comme toutes les autres tâches, la copie des fichiers peut ne pas toujours renvoyer des résultats à 100% réussis. Certains fichiers peuvent être corrompus pendant le transfert même s’il n’y a pas d’erreurs visibles.

Avec xcopy, vous pouvez utiliser le commutateur /V pour vérifier que les fichiers de destination et source sont identiques en fonction de leur taille après la copie. Les fichiers de source et de destination identiques indiquent que la copie a été réussie et que le fichier est intact.

La commande ci-dessous copie tous les fichiers de C:\Source à C:\destination\Backup et vérifie chaque fichier à l’aide du commutateur / v. Le commutateur / f affiche le chemin complet des fichiers source et de destination.

XCOPY C:\source C:\destination\Backup /F /H /S /X /V

Copier les fichiers et les dossiers sur le réseau

Voici un exemple de copier de fichiers depuis le dossier Vidéo vers un partage réseau via son UNC.

xcopy C:\Videos "\\SERVEUR\Sauvegardes_medias" /F /J /S /W /Z

Ici, la commande est utilisée pour copier tous les fichiers, sous-dossiers et fichiers contenus dans les sous-dossiers /S de la source de C:\Videos vers la sauvegarde de support de dossier de destination située sur un ordinateur sur le réseau par le nom du serveur.
Nous copions de très grands fichiers vidéo, donc la mise en mémoire tampon doit être désactivée pour améliorer le processus de copie /J et comme nous copions sur le réseau, nous voulons pouvoir reprendre la copie si nous perdons la connexion réseau grâce à l’option /Z.
En tant que paranoïaque, nous voulons être invités à démarrer le processus avant qu’il ne fasse en fait /W, et nous voulons également voir tous les détails sur les fichiers copiés lorsqu’ils sont copiés /F.

Comment exclure des fichiers dans xcopy

Si vous souhaitez copier un répertoire dans un autre emplacement mais que vous souhaitez exclure certains fichiers, vous pouvez utiliser /exclude avec la commande xcopy.
Vous devez mettre la liste des fichiers à exclure dans un fichier, puis spécifier ce fichier avec le commutateur /exclude en suivante cette syntaxe :

Xcopy /I Sourcedir  Destdir /EXCLUDE:fichier

La structure du fichier d’exclusion est la suivante où vous pouvez spécifier des noms de fichiers, des extensions ou encore des répertoires :

xyz.txt
FichieraExclure.txt
.pdf
.png
\dossieraExclure\

Par exemple :

Xcopy /I D:\data\documents E:\NouveauDossier\documents /EXCLUDE:%USERPROFILE%\Desktop\fichier-exclusions-copie.txt

Copier la structure des dossiers (sans les fichiers)

Voici un dernier exemple qui vous permet de dupliquer une arborescence avec la structure des dossiers.
Aucun fichier ne sera copié vers la destination mais les sous-dossiers seront recréés tels quels.

xcopy C:\source C:\destination /T /E

Pour y parvenir, on utilise deux options :

  • /T Crée la structure de répertoires mais ne copie pas les fichiers. N’inclut pas les répertoires ou sous-répertoires vides
  • /E Copie les répertoires et sous-répertoires, y compris les répertoires vides.

Copie de fichiers chiffrés par EFS

Xcopy prend également en charge la copie des fichiers chiffrés vers des destinations qui ne prennent pas en charge le chiffrement. À l’aide du commutateur /G, Xcopy copie des fichiers source chiffrés et crée des fichiers de destination déchiffrés.

Ce mode de copie est utile, en particulier lors de la sauvegarde des fichiers chiffrés sur des partages réseau ou des volumes de EFS (Encrypting File System).

Xcopy C:\source C:\destination /S /G

Script de sauvegarde XCOPY

Enfin xcopy s’intègre très bien dans des scripts batch.
Voici un exemple de script batch xcopy qui gère les sorties d’erreurs grâce aux ERRORLEVEL.

@echo off
REM COPYIT.BAT transfère tous les fichiers dans tous les sous-répertoires du
REM lecteur source ou le répertoire (% 1) à la destination 
REM du lecteur ou répertoire (% 2)
xcopy %1 %2 /s /e
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit
:lowmemory
echo Une mémoire insuffisante pour copier des fichiers ou
echo lecteur non valide ou syntaxe de ligne de commande.
goto exit
:abort
echo Vous avez appuyé sur Ctrl + C pour mettre fin à l'opération de copie.
goto exit
:exit

Mais si vous cherchez à effectuer des sauvegardes via des scripts batch, robocopy est plus appropriée notamment grâce à sa fonction JOB.