2012-03-28 16 views
9

Me gustaría un script por lotes en Windows con el que pueda copiar un directorio a otro. Si este directorio ya existe, y luego para cada archivo que ya existe en ambos con el mismo nombre y ubicación, se debe sobrescribir, si no existe, simplemente se debe agregar.¿Cómo escribo un script por lotes que copia un directorio a otro, reemplaza los archivos viejos?

Al final debe ser una secuencia de comandos por lotes a la que puedo pasar 2 argumentos, origen & destino.

Respuesta

31

En su archivo por lotes hacer esto

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

Si desea copiar el sub directorios incluyendo directorios vacíos luego hacer:

xcopy %source% %destination% /E /y 

Si sólo quiere copiar subdirectorios y no directorios vacíos luego use /s como:

xcopy %source% %destination% /s /y 
+0

Creo que también necesitas la bandera/E, como menciona Bali a continuación. – Samuel

+1

@Samuel, si el OP tiene que copiar directorios "vacíos" junto con subdirectorios, entonces "/ E" sería útil. Pero OP no lo necesita. – Habib

+0

Sí, esto lo aclara. ¡Gracias! – Samuel

3

¿Ha considerado utilizar el comando "xcopy"?

El comando xcopy hará todo eso por usted.

+0

Una pequeña muestra de cómo utilizarlo en este caso, o por lo menos un enlace a la documentación sería muy útil en este caso. – IQAndreas

1

Sólo tiene que utilizar xcopy /y source destination

2

Prueba esto:

xcopy %1 %2 /y /e

El %1 y %2 son el origen y el destino de los argumentos se pasa al archivo por lotes. es decir, C:\MyBatchFile.bat C:\CopyMe D:\ToHere

4

Parece que la última función para esto en Windows 7 es robocopy.

Ejemplo de uso:

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

/e incluyendo copia subdirectorios que están vacíos,/xf excluye ciertos archivos de la copia.

Más opciones aquí: http://technet.microsoft.com/en-us/library/cc733145(v=ws.10).aspx

Cuestiones relacionadas