83 votes

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

En utilisant la ligne de commande, j'aimerais copier un répertoire vers un autre. Par exemple, il y a un répertoire C:/test y C:/test2 .

Je voudrais copier C:/test sur C:/test2 de sorte que le résultat sera C:/test2/test

Tout ce que j'ai trouvé jusqu'à présent ne copiera que les fichiers et les dossiers contenus dans le fichier C:/test sur C:/test2 mais sans le répertoire parent.

3voto

Bill Points 41

Si la question initiale est celle à laquelle j'ai cherché une réponse, alors je n'ai pas trouvé de solution claire, pas plus que les autres.

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

xcopy /isvy c:\test d:\test2

d:\test2\test n'existe pas avant la copie mais existe après. Cela permet d'éviter de se tromper en tapant le test une 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. Encore une fois, 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 de destination dans le fichier mydir puis utilise cette variable dans le chemin d'accès source et destination. Si vous tapez la variable de manière incorrecte, vous obtiendrez une erreur ou le répertoire de destination aura probablement % au début et à la fin.

C'est plus long à taper mais il y a moins de risques de se tromper de nom. Ils seront perceptibles.

2voto

NetwOrchestration Points 2965
xcopy SWITCHES SOURCE DESTINATION

SWITCHES peut l'être :

  • Pour copier l'ensemble de la structure du répertoire :

    /hiev

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

    /hievry

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

    /hievxok

Le plus adapté à votre cas :

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

1voto

farooq Points 39

J'y parviens en utilisant la fonction Copy-Item de PowerShell.

Copy-Item 'C:/test' 'C:/test2' -Rcurse -Force

il copie tous les fichiers et dossiers en préservant la hiérarchie des dossiers -Force l'écrasement de la destination si elle existe déjà

0voto

mahendrent Points 1

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 d'une réponse m'aiderait, mais ce n'est vraiment pas le cas.

Tout d'abord, il y a certainement des occasions où l'on a besoin de cette capacité et j'en ai rencontré une quand j'ai dû copier des dossiers de C:\Windows\Assembly\GAC_MSIL. L'explorateur Windows refuse d'afficher ce dossier, vous devez donc utiliser une invite de commande.

Si vous êtes familier avec le dossier GAC, vous savez que les noms de dossier ne sont pas triviaux et qu'il est facile de se tromper en cas de faute de frappe.

Ainsi, créer le répertoire à l'avance n'est pas vraiment une option - à moins que vous n'utilisiez 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, celui-ci est généralement basé sur un modèle, par exemple

dir /B policy* > Folders.txt

Ensuite, bouclez sur les entrées dans le dump et copiez vers la destination. Xcopy se chargera de créer un dossier si vous terminez l'argument de destination par une barre oblique inverse (\).

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-les.

Maintenant, si seulement xcopy ou robocopy ont cette fonction intégrée.

0voto

XCOPY SourceDrive : DestinationDrive : /S /E

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X