276 votes

Fichier batch pour copier des fichiers d'un dossier à un autre dossier

J'ai un dossier de stockage sur un réseau dans lequel tous les utilisateurs vont stocker leurs données actives sur un serveur. Maintenant, ce serveur va être remplacé par un nouveau en raison d'un problème de place. J'ai donc besoin de copier les fichiers des sous-dossiers de l'ancien dossier de stockage du serveur vers le nouveau dossier de stockage du serveur. J'ai l'exemple suivant :

de \Oldeserver\storage\data et des fichiers vers \New serveur \storage\data et des fichiers.

3 votes

Je suppose que vous parlez d'un environnement Windows ?

4 votes

@HugoM.Zuleta, je connais les fichiers .bat. Mais "fichier batch" ne garantit pas nécessairement un environnement Windows. L'utilisation du terme est antérieure à Windows (tout comme les fichiers .bat) et j'ai même vu des novices utiliser le terme pour signifier "shell scripts" dans des environnements *nix.

489voto

lavinio Points 12592

xcopy.exe est définitivement votre ami ici. Il est intégré à Windows, donc son coût est nul.

Juste xcopy /s c:\source d:\target

Vous voudrez probablement modifier quelques éléments ; voici quelques-unes des options que nous ajoutons également :

  • /s/e - copie récursive, y compris la copie de répertoires vides.
  • /v - ajoutez ceci pour vérifier la copie par rapport à l'original. plus lent, mais pour les paranoïaques.
  • /h - copier le système et les fichiers cachés.
  • /k - copier les attributs en lecture seule avec les fichiers. sinon, tous les fichiers deviennent en lecture-écriture.
  • /x - si vous vous souciez des permissions, vous pourriez vouloir /o o /x .
  • /y - ne demandent pas de confirmation avant d'écraser les fichiers existants.
  • /z - si vous pensez que la copie peut échouer et que vous voulez la relancer, utilisez ceci. Elle place un marqueur sur chaque fichier au fur et à mesure de la copie, de sorte que vous pouvez réexécuter la commande xcopy pour reprendre là où elle s'est arrêtée.

Si vous pensez que la copie risque d'échouer en cours de route (comme lorsque vous copiez sur une connexion réseau défaillante), ou que vous devez l'arrêter et souhaitez la reprendre plus tard, vous pouvez utiliser xcopy /s/z c:\source d:\target .

J'espère que cela vous aidera.

2 votes

@Iavinio Il demande le fichier ou le répertoire lors de la copie d'une archive. Existe-t-il un moyen de supprimer cette demande ?

0 votes

Bonjour @mini-me - J'ai découvert que s'il s'agit d'un répertoire, vous pouvez spécifier un caractère '/' à la fin et vous ne verrez pas ce message.

2 votes

/i - Si la destination n'existe pas et que l'on copie plus d'un fichier, on suppose que la destination doit être un répertoire.

72voto

Etienne Dupuis Points 4573

Mon préféré pour sauvegarder les données est :

ROBOCOPY "C:\folder" "C:\new_folder" /mir

/mir est pour miroir. Vous pouvez également utiliser /mov pour déplacer des fichiers. Il reproduit exactement le même dossier. Il peut supprimer/supprimer des fichiers si nécessaire. Ça marche très bien pour moi. C'est beaucoup plus rapide que xcopy / copy. Il est également intégré à Windows.

Source : http://technet.microsoft.com/en-us/library/cc733145.aspx

3 votes

Je soutiens ce système. C'est vraiment rapide. Beaucoup plus rapide que xcopy.

0 votes

Existe-t-il un moyen de supprimer récursivement thumbs.db comme ceci ?

0 votes

Exactement ce que je cherchais. Copie tous les sous-dossiers et fichiers exactement à partir de la source.

59voto

Ike Points 146

Juste pour être clair, lorsque vous utilisez xcopy /s c:\source d:\target et mettez "" autour du c : \source et d : \target ,sinon vous obtenez une erreur.

ie s'il y a des espaces dans le chemin ie si vous avez :

"C:\Some Folder\*.txt"

mais ce n'est pas obligatoire si vous avez :

C:\SomeFolder\*.txt

1 votes

Les guillemets ont fait l'affaire ;) merci j'ai aussi utilisé /Y pour remplacer le fichier s'il existe :) Exemple : '''xcopy /s "c : \source " "d : \target " /Y```

18voto

Joey Points 148544

Vous voudrez peut-être jeter un coup d'œil à XCopy o RoboCopy qui sont des solutions assez complètes pour presque toutes les opérations de copie de fichiers sous Windows.

3 votes

RoboCopy semble être meilleur que XCopy car xcopy demande des décisions concernant les fichiers ou les dossiers. Et je ne peux pas le refuser. Il DOIT être capable de fonctionner de manière entièrement automatique.

0 votes

@mini-me Je sais que c'est très tard mais je ne trouve pas le même interrupteur. J'ai fini par faire en sorte qu'il crée un fichier vierge avec le même nom que celui vers lequel je copie, puis qu'il l'écrase. Si le fichier existe déjà, il ne prend pas la peine de demander si c'est un fichier ou un répertoire. (Si vous voulez un répertoire automatique, vous pouvez ajouter un '/' au chemin et il le fera). J'espère que cela aidera les futurs utilisateurs !

2 votes

@Eve Pour référence, echo f | xcopy source destination /y le rendra automatique. Il attribue à toutes les questions un "F" comme réponse. Il passera également les demandes d'écrasement (f est pris comme oui, je pense).

16voto

wintondeshong Points 179

Pour contourner l'invite 'spécifier un nom de fichier ou de répertoire sur la cible (F = fichier, D = répertoire)?' avec xcopy, vous pouvez faire ce qui suit...

echo f | xcopy /f /y srcfile destfile

ou pour ceux d'entre nous qui ne font que copier de grandes sous-structures/dossiers :

utiliser /i qui spécifie que la destination doit être un répertoire si l'on copie plus d'un fichier

0 votes

(echo "f" pour les fichiers ou "D" pour les répertoires)

0 votes

J'essaie de le faire maintenant et ça ne marche pas - j'obtiens toujours des invites lorsque j'essaie de copier un fichier dans un autre répertoire. J'utilise Win 10, si cela a une incidence sur l'opération. echo f | xcopy /f /y "My.dll" " C:\myFolder\My.dll ". J'ai essayé avec une combinaison d'autres interrupteurs sans succès (et F majuscule).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X