web-dev-qa-db-fra.com

Comment écrire un script de traitement par lots qui copie un répertoire dans un autre et remplace les anciens fichiers?

Je voudrais un script batch sous Windows avec lequel je peux copier un répertoire dans un autre. Si ce répertoire existe déjà, et pour chaque fichier existant dans les deux avec le même nom et le même emplacement, il devrait être remplacé, s'il n'existe pas, il devrait simplement être ajouté.

En fin de compte, il devrait s'agir d'un script batch auquel je peux transmettre 2 arguments, source et destination.

10
NomenNescio

Faites ceci dans votre fichier batch

set source=C:\Users\Habib\test
set destination=C:\Users\Habib\testdest\
xcopy %source% %destination% /y

Si vous voulez copier les sous-répertoires y compris les répertoires vides , alors:

xcopy %source% %destination% /E /y

Si vous souhaitez uniquement copier des sous-répertoires et non des répertoires vides, utilisez /s comme:

xcopy %source% %destination% /s /y
32
Habib

Il semble que la dernière fonction pour cela dans Windows 7 soit Robocopy.

Exemple d'utilisation:

robocopy <source> <destination> /e /xf <file to exclude> <another file>

/ e copie les sous-répertoires, y compris les vides,/xf exclut la copie de certains fichiers.

Plus d'options ici: http://technet.Microsoft.com/en-us/library/cc733145(v=ws.10).aspx

4
Uri

Avez-vous envisagé d'utiliser la commande "xcopy"?

La commande xcopy fera tout cela pour vous.

3
pdwalker

Essaye ça:

xcopy %1 %2 /y /e

%1 et %2 sont les arguments de source et de destination que vous transmettez au fichier de commandes. i.e. C:\MyBatchFile.bat C:\CopyMe D:\ToHere

2
Bali C

Il suffit d'utiliser xcopy /y source destination

1
adarshr