2010-11-01 21:50:02 +0000 2010-11-01 21:50:02 +0000
72
72

Commande en ligne de commande pour copier le répertoire entier (y compris le répertoire de répertoire) dans un autre répertoire

en utilisant la ligne de commande, je voudrais copier un répertoire dans un autre. Par exemple, il y a les répertoires C:/test et C:/test2.

Je voudrais copier C:/test dans C:/test2 de sorte que le résultat soit C:/test2/test

Tout ce que j'ai trouvé jusqu'à présent ne copiera que les fichiers et les dossiers contenus dans C:/test dans C:/test2, mais en laissant de côté le répertoire parent.

Réponses (10)

52
52
52
2010-11-01 21:52:22 +0000

Essayez d'utiliser XCOPY avec l'interrupteur /E. Plus d'infos ici .

Je n'ai pas eu à accéder à cette information depuis années !

MISE À JOUR

La documentation indique qu'il copie tous les fichiers et sous-répertoires du répertoire source (ce qui signifie que le répertoire parent n'est pas créé), vous devez donc d'abord créer test dans C:\test2 et ensuite utiliser XCOPY.

21
21
21
2015-11-22 21:23:05 +0000

Utilisez ROBOCOPY si vous créez des scripts de sauvegarde. xcopy est obsolète et sera probablement abandonné dans un avenir proche. robocopy peut faire tout ce que xcopy peut faire. Il est également plus flexible et plus fiable. La création de scripts avec robocopy les rendra pérennes.


  1. Utilisez robocopy pour copier facilement des dossiers. La commande robocopy remplace la commande xcopy. Elle permet de copier rapidement 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 :

  2. Mettez en miroir un répertoire. L'écriture miroir d'un répertoire est idéale pour faire des sauvegardes. L'option miroir de robocopy copiera tout le contenu de la source vers la destination. Elle supprimera ensuite tout ce qui n'existe pas à la source. Cela permet de s'assurer que votre sauvegarde ne contient que les dernières versions de vos fichiers. Par exemple, pour créer un miroir de C:\Users\My Documents vers D:\backup\My Documents, entrez ce qui suit : [4]

  3. Activez le redémarrage. Vous pouvez inclure la possibilité de redémarrer le processus au cas où la connexion serait coupée en plein milieu de la copie.

  4. Journaliser le processus de copie. robocopy vous permet de créer un fichier journal. Cela peut vous aider à identifier les problèmes ou à générer une archive de ce qui a été copié.

8
8
8
2010-11-02 03:09:24 +0000

Je recommande robocopy plutôt que xcopy , car il offre beaucoup plus d'options, notamment la conservation des horodatages, que je trouve essentielle.

Robocopy doit être ajouté sur XP/2003, mais il est standard à partir de Vista.

En fait, j'utilise généralement xxcopy , mais la version 64 bits n'est pas gratuite.

5
5
5
2012-06-22 06:40:49 +0000
XCOPY SourceDrive: DestinationDrive: /S /E

Par exemple, si vous avez besoin de copier les données du lecteur E: vers le lecteur H: (disque dur externe) via la ligne de commande ou depuis l'environnement de commande xboot.

xboot:\>XCOPY E:\ "H:\BackupFolder\" /S /E
3
3
3
2016-04-29 18:29:05 +0000

Si la question originale est celle à laquelle je cherchais une réponse, alors j'ai trouvé une solution claire, et évidemment personne au-dessus de moi.

Ce que je cherche, c'est à copier le répertoire test dans le répertoire test2 sans avoir à le retaper. Quelque chose comme

xcopy /isvy c:\test d:\test2

d:\test2\test n'existe pas avant la copie mais existe après. Cela permettrait d'éviter de mal saisir test la deuxième fois dans le chemin de destination. La commande ci-dessus copiera tous les fichiers et tous les répertoires dans test2 mais ne créera pas le répertoire test. Jusqu'à présent,

xcopy /isvy c:\test d:\test2\test

est vraiment le seul moyen que j'ai trouvé pour faire ce travail. Une fois de plus, si vous avez des problèmes de frappe, il n'y a aucune garantie que les répertoires source et destination correspondent.

Une alternative pour corriger cela est

set mydir=test&&xcopy /isvy c:\%mydir% c:\test2\%mydir%

Cela définit le répertoire destination dans la variable mydir puis utilise cette variable dans le chemin source et destination. Si vous tapez mal la variable, vous obtiendrez une erreur ou le répertoire de destination aura probablement % au début et à la fin.

Il est plus long à taper mais il y a moins de chances d'obtenir des noms erronés. Ils seront visibles.

1
1
1
2016-08-18 22:26:31 +0000
xcopy SWITCHES SOURCE DESTINATION

Où peut être SWITCHES :

  • Pour copier toute la structure du répertoire :

  • Pour écraser les fichiers dans le répertoire de destination (dans le cas où le répertoire de destination existe déjà) :

  • Pour écraser et aussi copier avec ACL+Attribut :

Le plus adapté à votre cas:

xcopy /hievry C:\test C:\test2\test

0
0
0
2017-07-24 12:06:12 +0000

J'ai eu une situation similaire où j'avais besoin de copier un certain nombre de dossiers, y compris les noms de dossiers, vers un emplacement de destination, et j'espérais que cette question marquée “Réponse” aiderait, mais ce n'est vraiment pas le cas.

Premièrement, il y a certainement des occasions où l'on aurait besoin de cette capacité et j'en ai rencontré une lorsque j'ai dû copier des dossiers depuis C:\Windows\Assembly\GAC_MSIL. L'explorateur Windows refuse d'afficher ce dossier, il faut donc utiliser une invite de commande.

Si vous connaissez bien le dossier GAC, vous savez que les noms de dossiers sont non triviaux et qu'il est facile de se tromper si vous faites une faute de frappe.

Ainsi, créer le répertoire à l'avance n'est pas vraiment une option - à moins d'utiliser un script - que j'ai fini par utiliser, car c'était la seule vraie solution.

Commencez par vider les dossiers que vous voulez copier dans un fichier temporaire, ceci est généralement basé sur un certain modèle, par exemple

dir /B policy* > Folders.txt

Puis passez en boucle sur les entrées dans le vidage et copiez à destination. Xcopy se chargera de créer un dossier si vous terminez l'argument de destination par une barre oblique inversée ()

for /F "tokens=*" %%A in (Folders.txt) do xcopy /E /S %%A C:\Dest\%%A\

Mettez ces deux commandes dans un fichier batch et exécutez.

Maintenant, si seul xcopy ou robocopy est intégré.

0
0
0
2018-12-07 17:07:00 +0000

Je suis arrivé à une réponse alternative fonctionnelle à votre question.

Premièrement, l'utilisation de FORFILES avec le paramètre /S, confère que chaque sous-répertoire de C:\test sera atteint.

Deuxièmement, avec le paramètre /C, il est possible de démarrer une chaîne de commandes avec des variables natives, ce qui permet de créer les répertoires identic à la destination, et ensuite de copier les fichiers à l'intérieur de ceux-ci, en utilisant deux structures conditionnelles.

La première structure conditionnelle @isdir==TRUE (assurez-vous d'utiliser des majuscules), permet d'obtenir les répertoires uniquement à partir de la source, puis de les créer à la destination avec MKDIR [path]\@relpath à la fin. Enfin, la seconde structure conditionnelle s'assure qu'elle ne fonctionne qu'avec des fichiers avec @isdir==FALSE, puis la commande COPY fait simplement le travail, en obtenant tous les fichiers par la commande FORFILES, en définissant [path]@relpath comme destination, pour copier les fichiers dans les répertoires qui viennent d'être créés.

forfiles /s /c " cmd /c ( if @isdir==TRUE mkdir C:\test\@relpath ) && ( if @isdir==FALSE copy @file C:\test2\@relpath)"

Espérons que cela aidera tout le monde ici.

0
0
0
2018-05-15 05:24:03 +0000

XCOPY SourceDrive : DestinationDrive : /S /E

-2
-2
-2
2010-11-02 05:24:21 +0000

Cela se fera à partir de l'interface graphique, je ne sais pas comment ils le font.

“…petit programme vous permettra de sélectionner "from directory” et “into directory”, et il procédera à la copie SEULEMENT de la structure du répertoire" http://www.rjlsoftware.com/software/utility/treecopy/