usando la línea de comando, me gustaría copiar un directorio a otro. Por ejemplo hay directorio C:/test
y C:/test2
.
Me gustaría copiar C:/test
a C:/test2
fin de que el resultado seráC:/test2/test
Todo lo que he encontrado hasta ahora, solamente se copiará los archivos y carpetas contenidas en C:/test
en C:/test2
, pero deja fuera el directorio padre.
windows
command-line
Scott Chamberlain
fuente
fuente
Respuestas:
Intente usar
XCOPY
con el/E
interruptor. Más información aquí .¡No he tenido que acceder a esta información desde mi cerebro en años !
ACTUALIZAR
La documentación dice que copia todos los archivos y subdirectorios del directorio de origen (lo que significa que el directorio padre no se crea), por lo que tendría que crear
test
enC:\test2
primer lugar y luego usarXCOPY
.fuente
robocopy /CREATE /COPYALL /DCOPY:T src dst
para copiar la carpeta y los archivos vacíos, pero preservar todas las marcas de tiempo y otros atributos.test
todavía se necesita crear una carpeta .md test
y luego usarxcopy
era trivialmente obvio.copy
carpeta que no crea una nueva carpeta y luego copia los contenidos en ella.Aquí hay información sobre XCOPY [ 1 , 2 ]
fuente
Use ROBOCOPY si está creando scripts de respaldo. xcopy ha quedado en desuso y es probable que deje de usarse en un futuro próximo. robocopy puede hacer todo lo que xcopy puede. También es más flexible y confiable. Crear scripts con robocopy los preparará para el futuro.
Use robocopy para copiar fácilmente carpetas. El comando robocopy reemplaza al comando xcopy. Puede copiar rápidamente carpetas completas sin tener que preocuparse por definir el contenido. Por ejemplo, para copiar todo el contenido del directorio C: \ tools a la nueva carpeta D: \ backup \ tools, ingrese lo siguiente:
El modificador / e le dice a robocopy que incluya todos los subdirectorios. Esto incluye carpetas vacías. robocopy copiará automáticamente los archivos ocultos y del sistema. Creará nuevos directorios si no existen en la ubicación de destino.
Reflejar un directorio. Duplicar un directorio es excelente para hacer copias de seguridad. La opción espejo de robocopy copiará todo el contenido del origen al destino. Luego eliminará cualquier cosa en el destino que no exista en la fuente. Esto garantiza que su copia de seguridad solo tenga las últimas versiones de sus archivos. Por ejemplo, para duplicar C: \ Usuarios \ Mis documentos en D: \ copia de seguridad \ Mis documentos, ingrese lo siguiente: [4]
Esta función preservará todos los permisos de los archivos originales.
Habilitar reinicio. Es posible que desee incluir la posibilidad de reiniciar el proceso en caso de que la conexión se corte a mitad de la copia.
Registre el proceso de copia. robocopy le permite crear un archivo de registro. Esto puede ayudarlo a detectar problemas o generar un archivo de lo que se ha copiado.
El modificador / log + agregará el archivo de registro existente en lugar de sobrescribirlo. Si prefiere sobrescribir el archivo de registro anterior, use /log:.txt.
fuente
Recomiendo robocopy sobre xcopy , ya que tiene muchas más opciones, incluyendo mantener intactas las marcas de tiempo, lo que considero esencial.
Es necesario agregar Robocopy en XP / 2003, pero es estándar desde Vista en adelante.
En realidad, generalmente uso xxcopy , pero la versión de 64 bits no es gratuita.
fuente
robocopy
es un programa de Windows La pregunta era sobre DOS.Por ejemplo, si necesita copiar
E:
datos de laH:
unidad a la unidad (disco duro externo) a través de la línea de comandos o desde el entorno de comando xboot.fuente
Si la pregunta original es a qué he estado buscando una respuesta, entonces, y obviamente ninguno de los anteriores, he encontrado una solución clara.
Lo que estoy buscando es copiar el directorio de prueba en el directorio test2 sin tener que volver a escribirlo. Algo como
donde
d:\test2\test
no existe antes de la copia pero sí después. Esto ahorraría en la prueba de escritura incorrecta la 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 aquí
es realmente la única forma en que he encontrado para hacer este trabajo. Nuevamente, si tiene problemas de escritura, no hay garantía de que los directorios de origen y destino coincidan.
Una alternativa para corregir esto es
Esto establece el directorio de destino en la
mydir
variable y luego usa esa variable tanto en la ruta de origen como en la de destino. Si escribe la variable incorrectamente, obtendrá un error o el directorio de destino probablemente lo tendrá%
al principio y al final.Es más largo escribir pero menos posibilidades de obtener los nombres incorrectos. Ellos se notarán.
fuente
xcopy /ievy c:\test d:\test2\test
mantener la estructura de árbol de directorios, yset mydir=test&xcopy /isvy c:\%mydir% c:\test2\%mydir%
solo en 1 & será suficiente, ya que el resultado de establecer un valor siempre es exitoso.Donde
SWITCHES
puede ser:Para copiar toda la estructura del directorio:
/hiev
Para sobrescribir archivos en el destino (en caso de que la carpeta de destino ya exista):
/hievry
Para sobrescribir y también copiar con ACL + Attribute:
/hievxok
Lo más adecuado para su caso:
xcopy /hievry C:\test C:\test2\test
fuente
Tuve una situación similar en la que necesitaba copiar una serie de carpetas, incluidos los nombres de las carpetas, en una ubicación de destino, y esperaba que esta pregunta marcada como contestada ayudara, pero realmente no es así.
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: \ Windows \ Assembly \ GAC_MSIL. El Explorador de Windows se niega a mostrar esta carpeta, por lo que debe usar un símbolo del sistema.
Si está familiarizado con la carpeta GAC, sabrá que los nombres de las carpetas no son triviales y es fácil equivocarse si escribe incorrectamente.
Por lo tanto, 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 volcar las carpetas que desea copiar en un archivo temporal, esto generalmente se basa en algún patrón, por ejemplo
Luego repita las entradas en el volcado y copie al destino. Xcopy se encargará de crear una carpeta si finaliza el argumento de destino con una barra diagonal inversa (\)
Coloque ambos comandos en un archivo por lotes y ejecútelos.
Ahora, si solo xcopy o robocopy tiene esto incorporado.
fuente
XCOPY SourceDrive: DestinationDrive: / S / E
fuente
/S /E
banderas)He llegado a una respuesta alternativa funcional para su pregunta.
En primer lugar, el uso
FORFILES
con el/S
parámetro confiere queC:\test
se alcanzará cada subdirectorio .En segundo lugar, con el
/C
parámetro, es posible iniciar una cadena de comandos con variables nativas, lo que hace posible crear los directorios idénticos en el destino, y ENTONCES copiar los archivos dentro de ellos, utilizando dos estructuras condicionales.La primera estructura condicional
@isdir==TRUE
(asegúrese de usar letras mayúsculas), permite obtener directorios solo desde la fuente, y luego crearlos en el destino conMKDIR [path]\@relpath
al final.Finalmente, el segundo se asegura de que solo esté trabajando con archivos
@isdir==FALSE
, y luego el comando COPIAR simplemente hace el trabajo, haciendo que todos los archivos sean alcanzados por el comando FORFILES, configurando[path]@relpath
como destino, para copiar los archivos dentro de los directorios recién creados.Espero que ayude a todos por aquí.
fuente
Esto lo hará desde la GUI, no sé cómo lo hacen.
"... un pequeño programa le permitirá seleccionar" desde el directorio "y" en el directorio ", y procederá a copiar SOLO la estructura del directorio".
http://www.rjlsoftware.com/software/utility/treecopy/
fuente