Quelle est la commande de Windows en ligne de commande pour copier des fichiers?

34

Quelle est la commande d'invite de commande Windows pour copier des fichiers?

J'ai besoin de déplacer un fichier de l'emplacement A à l'emplacement B. De plus, si le dossier de l'emplacement B n'existe pas, je souhaite le créer.

J'ai besoin que cela soit une ligne de commande pour pouvoir l'automatiser.

La version de Windows est XP.

David Basarab
la source
1
robocopyfonctionne très bien aussi
Nixphoe

Réponses:

44

La commande xcopyest ce que vous recherchez. Exemple:

xcopy source destination /E /C /H /R /K /O /Y

La commande ci-dessus copie la source dans la destination, les fichiers et les répertoires (y compris ceux vides), ne s’arrête pas en cas d’erreur, copie les fichiers cachés et système, écrase les fichiers en lecture seule, préserve les attributs et les informations de propriété / ACL et supprime demandant de remplacer les fichiers de destination existants.

/E    Copies directories and subdirectories, including empty ones.
      Same as /S /E. May be used to modify /T.
/C    Continues copying even if errors occur.
/H    Copies hidden and system files also.
/R    Overwrites read-only files.
/K    Copies attributes. Normal Xcopy will reset read-only attributes.
/O    Copies file ownership and ACL information.
/Y    Suppresses prompting to confirm you want to overwrite an
      existing destination file.

Pour plus d'informations, tapez xcopy /?votre ligne de commande.

KCD
la source
2
Les versions futures de Windows incluent RoboCopy. Sur XCOPY de Vista: "REMARQUE: Xcopy est maintenant obsolète, veuillez utiliser Robocopy."
George Tsiokos
1
Fait intéressant, deux ans après votre commentaire, George, xcopy «règne toujours sur le monde» sous Windows 7.
Notez que les environnements Windows XP intégrés (POSReady 2009, etc.) ne sont pas livrés avec xcopy.
Epoc
J'ai suggéré une modification pour lister toutes ces options ...! Si vous n'êtes pas en train de l' automatiser /E /Het /K /Oque vous avez peut-être du chemin à faire avec quelques astuces utiles
KCD
N'oubliez pas /Jce qui empêche un bug avec XCopy lors de la copie de gros fichiers. Je ne sais pas pourquoi ils ne voudraient pas que ce soit le cas par défaut ...
BlueRaja
8

Utilisez md pour créer le dossier (c'est ok s'il existe déjà)

Utiliser copier ou déplacer pour les fichiers et xcopy pour les dossiers

Dani
la source
Pouvez-vous me donner un exemple de syntaxe?
David Basarab
3
copy fred.txt copy_of_fred.txt
Adam Gibbins
1
copie /? vous donnera le texte d'aide, un peu comme une page de manuel DOS.
Scottie T
2

Dans un fichier batch:

if not exists locationB\nul mkdir locationB
copy locationA\file locationB

if not existsvérifie le paramètre pour voir s'il existe, mais cela ne fonctionne que sur les fichiers. Pour vérifier l'existence d'un répertoire , vous devez rechercher un 'pseudo-fichier' appelé "nul" - la vérification de l'existence de ce fichier renverra toujours la valeur true si le répertoire existe.

Les copies de la ligne de copie le fichier appelé filedans le répertoire locationApour locationBet les noms du fichier de la même chose. Si vous souhaitez renommer le fichier en même temps, vous pouvez également le faire:

copy locationA\file locationB\newfilename
Graeme Perrow
la source
2

Si vous souhaitez pouvoir synchroniser la copie et d'autres fonctionnalités avancées (ignorer certains dossiers, n'inclure que certains caractères génériques), examinez-le robocopy. Inclus dans Vista et au-delà, facultatif (à partir des outils du kit de ressources) dans les versions antérieures.

Richard
la source
Pour tout ce qui est important, je vais aller avec robocopy, aussi. Il me semble me rappeler une énorme différence de performances par rapport à xcopy lors de la synchronisation d'un grand nombre de fichiers.
Kara Marfia
1

Utilisez ROBOCOPY si vous créez des scripts de sauvegarde. xcopy est obsolète et ne sera probablement plus utilisé dans un proche avenir. Robocopy peut faire tout ce que xcopy peut faire. Il est également plus flexible et fiable. Créer des scripts avec robocopy les protégera de l'avenir.


  1. Utilisez robocopy pour copier facilement des dossiers. La commande robocopy remplace la commande xcopy. Il peut rapidement copier des dossiers entiers sans avoir à se soucier de la définition du contenu. Par exemple, pour copier tout le contenu du répertoire C: \ tools dans le nouveau dossier D: \ backup \ tools, entrez la commande suivante:

    robocopy C:\tools D:\backup\tools /e
    

    Le modificateur / e indique à robocopy d'inclure tous les sous-répertoires. Cela inclut les dossiers vides. robocopy copiera automatiquement les fichiers cachés et système. Il créera de nouveaux répertoires s’ils n’existent pas à l’emplacement cible.

  2. Mettre en miroir un répertoire. La mise en miroir d'un répertoire est idéale pour effectuer des sauvegardes. L'option miroir de robocopy copiera tout le contenu de la source vers la destination. Il supprimera alors tout ce qui existe à la destination et n’existe pas à la source. Cela garantit que votre sauvegarde ne contient que les dernières versions de vos fichiers. Par exemple, pour mettre en miroir C: \ Utilisateurs \ Mes documents sur D: \ backup \ Mes documents, entrez les informations suivantes: [4]

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
    

    Cette fonction préservera toutes les autorisations des fichiers originaux.

  3. Activer le redémarrage. Vous souhaiterez peut-être inclure la possibilité de redémarrer le processus au cas où la connexion serait interrompue en cours de copie.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
    
  4. Enregistrez le processus de copie. Robocopy vous permet de créer un fichier journal. Cela peut vous aider à identifier des problèmes ou à créer une archive de ce qui a été copié.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
    

    Le modificateur / log + ajoutera le fichier journal existant au lieu de l'écraser. Si vous préférez simplement écraser l'ancien fichier journal, utilisez /log:.txt.

Programme-moi-rev
la source
0

xcopy créera la structure de répertoires pour vous. L'astuce consiste à utiliser l'option / I et à insérer un astérisque à la fin du nom de fichier afin que xcopy pense que vous copiez plusieurs fichiers. Sinon, il vous demande si le nom de la cible est le nom de fichier souhaité ou le nom du répertoire souhaité. . Par exemple.

xcopy /I c:\<SourceDir>\<SourceFile> c:\<TargetDirThatDoesNOTExist>

Je regarderais aussi RoboCopy, mais vous devez l'obtenir à partir du kit de ressources car ce n'est pas sous Windows avant Vista.

WaldenL
la source
-1

La commande ci-dessus crée un niveau de répertoire supplémentaire avec le nom du fichier source. Donc ... xcopy / I srcdir \ dir1 \ dir2 \ fichier1.txt * destdir \ dir1 \ dir2 \ fichier1.txt a pour résultat destdir \ dir1 \ dir2 \ fichier1.txt \ fichier1.txt

Jeff
la source
1
Cela n’a aucun sens de répondre à une question aussi ancienne, qui a déjà une réponse acceptée et qui n’apporte pas une valeur ajoutée à votre réponse.
alphamikevictor