Usuario del software
2010-11-01 21:50:02 +0000 2010-11-01 21:50:02 +0000
72

Comando de línea de comandos para copiar todo el directorio (incluyendo la carpeta del directorio) a otro directorio

usando la línea de comandos, me gustaría copiar un directorio a otro. Por ejemplo, hay un directorio C:/test y C:/test2.

Me gustaría copiar C:/test en C:/test2 para que el resultado sea C:/test2/test

Todo lo que he encontrado hasta ahora sólo copiará los archivos y carpetas contenidos en C:/test en C:/test2, pero deja fuera el directorio principal.

Respuestas [10]

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

Intenta usar XCOPY con el interruptor /E. Más información aquí .

¡No he tenido que acceder a esta información desde mi cerebro desde hace años!

Actualización

La documentación dice que copia todos los archivos y subdirectorios del directorio de origen (lo que significa que el directorio padre no está creado), así que tendrías que crear test en C:\test2 primero y luego usar XCOPY.

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

Usa ROBOCOPIA si estás creando guiones de respaldo. xcopy ha sido desaprobado y probablemente será retirado del uso en un futuro cercano. robocopy puede hacer todo lo que xcopy puede. También es más flexible y fiable. La creación de guiones con robocopy los pondrá a prueba en el futuro.


  1. Usa robocopy para copiar fácilmente las carpetas. El comando robocopy reemplaza al comando xcopy. Puede copiar rápidamente carpetas enteras sin tener que preocuparse por definir el contenido. Por ejemplo, para copiar todo el contenido del directorio C:\Ntools a la nueva carpeta D:\N-backup\Ntools, introduce lo siguiente:

  2. Refleja un directorio. Reflejar un directorio es genial para hacer copias de seguridad. La opción de espejo de robocopy copiará todo el contenido de la fuente al destino. Luego borrará cualquier cosa en el destino que no exista en la fuente. Esto asegura que tu copia de seguridad sólo tiene las últimas versiones de tus archivos. Por ejemplo, para hacer una copia de seguridad de C:\Usuarios\NMis Documentos a D:\N- Mis Documentos, introduzca lo siguiente:[4]

  3. Habilitar el reinicio. Puede incluir la posibilidad de reiniciar el proceso en caso de que la conexión se interrumpa en medio de la copia.

  4. Robocopy le permite crear un archivo de registro. Esto puede ayudarle a identificar problemas o generar un archivo de lo que se ha copiado.

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

Recomiendo robocopy sobre xcopy , ya que tiene muchas más opciones, incluyendo mantener las marcas de tiempo intactas, lo cual encuentro esencial.

Robocopy necesita ser añadido en XP/2003, pero es estándar a partir de Vista.

En realidad suelo usar xxcopy , pero la versión de 64 bits no es gratuita.

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

Por ejemplo, si necesitas copiar los datos de la unidad E: a la unidad H: (disco duro externo) a través de la línea de comandos o desde el entorno de comandos xboot.

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

Si la pregunta original es lo que he estado buscando una respuesta, entonces yo, y obviamente nadie de arriba, ha llegado a una solución clara.

Lo que busco es copiar el directorio de prueba en el directorio de prueba2 sin tener que escribirlo de nuevo. Algo como

xcopy /isvy c:\test d:\test2

donde d:\test2\test no existe antes de la copia sino después. Esto ahorraría el error de teclear la prueba por segunda vez en la ruta de destino. El comando anterior copiará todos los archivos y cualquier directorio en test2 pero no creará el directorio de prueba.

Hasta ahora

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

es realmente la única manera que he encontrado para hacer este trabajo. De nuevo, si tienes problemas de escritura no hay garantía de que los directorios de origen y destino coincidan.

Una alternativa para corregir esto es

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

Esto establece el directorio de destino en la variable mydir y luego usa esa variable tanto en la ruta de origen como en la de destino. Si tecleas la variable incorrectamente, obtendrás un error o el directorio de destino probablemente tendrá % al principio y al final.

Es más largo de teclear pero menos posibilidades de obtener los nombres incorrectos. Se notarán.

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

Dónde puede estar SWITCHES:

  • Para copiar toda la estructura de directorios:

  • Para sobrescribir los archivos en destino (en caso de que la carpeta de destino ya exista):

  • Para sobrescribir y también copiar con ACL+Atributo:

Más adecuado para su caso:

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

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

Tuve una situación similar en la que necesitaba copiar un número de carpetas incluyendo los nombres de las mismas a una ubicación de destino, y esperaba que esta pregunta marcada como respuesta ayudara, pero realmente no lo hace.

En primer lugar, definitivamente hay ocasiones en las que uno necesitaría esta habilidad y me encontré con una cuando tuve que copiar carpetas de C:\NWindows\Assembly\GAC\NMSIL. El Explorador de Windows se niega a mostrar esta carpeta, por lo que hay que usar un símbolo del sistema.

Si estás familiarizado con la carpeta GAC, sabrás que los nombres de las carpetas no son triviales y es fácil equivocarse si escribes mal.

Así que crear el directorio de antemano no es realmente una opción - a menos que use un script - que terminé usando, ya que esta era la única solución real.

Primero haga un volcado de las carpetas que desea copiar a un archivo temporal, esto se basa normalmente en algún patrón, por ejemplo

dir /B policy* > Folders.txt

Luego haga un bucle sobre las entradas en el volcado y copie a destino. Xcopy se encargará de crear una carpeta si terminas el argumento de destino con una barra invertida ()

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

Poner ambos comandos en un archivo por lotes y ejecutarlo.

Ahora si sólo xcopy o robocopy tiene esto incorporado.

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

He llegado a una respuesta funcional alternativa a su pregunta.

En primer lugar, usando FORFILES con el parámetro /S, confiere que cada subdirectorio en C:\test será alcanzado.

En segundo lugar, con el parámetro /C, es posible iniciar una cadena de comandos con variables nativas, lo que hace posible crear los directorios idénticos en el destino, y luego copiar los archivos dentro de ellos, usando dos estructuras condicionales.

La primera estructura condicional @isdir==TRUE (asegúrese de usar mayúsculas), permite obtener los directorios sólo de la fuente, y luego crearlos en el destino con MKDIR [path]\@relpath al final.

Finalmente, la segunda se asegura de que está trabajando con archivos sólo con @isdir==FALSE, y luego el comando COPY simplemente hace el trabajo, haciendo que todos los archivos lleguen al comando FORFILES, estableciendo [path]@relpath como destino, para copiar los archivos dentro de los directorios recién creados.

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

Esperanza que ayuda a todos por aquí.

0