Comando MS-DOS: Copy y Xcopy

Seguimos hoy con el pequeño curso de MS-DOS que iniciamos hace unas semanas explicando el comando DIR, hoy le toca el turno a algo que seguramente os será de mucha ayuda, los comando copy y xcopy.

Estos dos comandos nos permiten copiar archivos desde una ubicación a otra. ¿Y para que necesitáis esto? Seguramente muchos, por no decir todos, los que nos leen poseen datos en sus discos duros que no desean perder. La mejor opción para evitar la perdida de los mismos es realizar copias de seguridad o backups. Y estos dos comandos nos ayudarán a realizar esta labor de una forma sencilla y muy cómoda.

La diferencia entre el comando copy y el comando xcopy radica en que uno, en el caso del comando copy, no puede copiar subdirectorios y el xcopy sí permite realizar copia de archivos y subdirectorios.

Bueno, comencemos con un ejemplo:

copy C:\prueba.txt D:\

Con esto copiaremos el archivo prueba.txt, existente en C:\, en la unidad D:. Si queremos que se copie en una carpeta específica, sólo tendremos que escribir lo siguiente:

copy C:\prueba.txt D:\CARPETADESTINO\

Cambiando la letra de la unidad realizaremos la copia en cada una de las particiones o discos duros que poseamos.

Bueno pero con esto sólo estamos copiando un archivo. Avancemos un poco más…

copy *.* D:\CARPETADESTINO\

Con esto podremos copiar todos los archivos en la carpeta de destino. Si cambiamos *.* por:

  • *.avi estaremos copiando sólo nuestra colección de películas.
  • *.mp3 salvaremos nuestra colección de música.

En estos casos los *, llamados también caracteres comodines, son usados para representar cualquier secuencia  de caracteres.

Hemos dado un paso importante y de copiar un único archivo ya hemos avanzado hasta copiar todos los archivos de un directorio. Para copiar todos los archivos y subdirectorios de una carpeta sólo tendremos que sustituir el comando copy por el comando xcopy. Pero ¿es esto más cómodo que realizar un copiar y pegar (Control+C y un Control+V)?. Pues aunque te sorprenda vamos a descubrir que sí.

Casi todos los SO, Windows incluido, son capaces de realizar tareas por lotes y de forma secuencial, gracias a los archivos por lotes. Para hacer esto nosotros sólo tendremos que crear un fichero de texto plano (los .txt de toda la vida) guardarlo y posteriormente cambiarle la extensión por .bat, de esta forma crearemos nuestro primer archivo por lotes.

Vayamos a un ejemplo practico, supongamos que quieres guardar todo el contenido de tu carpeta de Mis Documentos en el flamante disco duro externo que te acabas de comprar (imaginemos que a letra de la unidad es la D:). ¿Cómo lo tienes que hacer?

  1. Ir dentro de la carpeta de Mis Documentos y crear un archivo de texto plano (.txt) llamalo «Copia de Seguridad de Mis Documentos.txt».
  2. Edítalo, haz doble clic sobre el archivo, con lo que se te abrirá el Bloc de Notas (notepad.exe).
  3. Escribe:                xcopy *.* D:\CopiaSeguridad\ /Y
  4. Guarda el archivo.
  5. Cámbiale la extensión por .bat, con lo que el archivo quedaría con el siguiente nombre: «Copia de Seguridad de Mis Documentos.bat».
  6. Crea un acceso directo del fichero que acabas de crear (haciendo clic con el botón derecho del ratón y elegir crear acceso directo) y cópiala o muévela a tu escritorio.

Ya estas listo para realizar una copia de seguridad cada vez que lo necesites haciendo únicamente un doble clic. De esta forma y dedicándole 5 minutos habrás conseguido que tus datos no se pierdan y que esa hermana, sobrino, o padre tan torpes que usan un ordenador no pierdan nunca sus datos.

En el fichero por lotes, he usado el parámetro /Y, este es uno de los parámetros que modifican el funcionamiento del comando, lo que hace es que no nos pregunte nada. La lista completa de parámetros que se pueden usar con uno u otro comando del ms-dos se puede averiguar poniendo al lado del comando del que queramos más información los caracteres /?.

copy /?

Podemos dar un paso más y hacer que el ordenador realice periódicamente esta labor, asignando una nueva tarea programada a la que asociamos el fichero por lotes que acabamos de realizar.

Saludos desde lo más profundo de los bytes.

58 Comentarios
Mostrar todo Más útil Rating más alto Rating más bajo Añade tu reseña
  1. Una cosa, no se acabo de ver este «curso» para iniciarse en esto del MS-Dos y ya que estabas explicando el comando copy me gustaria saber como se separan dos archivos para luego unirlos mediante

    copy /b [archivo.aa] +[archivo.ab] [archivo nuevo]

    No se si esto debo preguntarlo aquí porque puede parecer muy avanzado. Pero bueno muchas gracias por su atención.

  2. Buenas Albaro,
    Como comentas el modificador /b sirve para unir archivos. La utilidad que se le puede dar a este comando es la de unir dos ficheros avi o mp3 en uno solo. Para dividir un archivo avi por ejemplo en varias partes lo mejor es usar programas como el SpanishDub, en el caso de mp3 pues editores de sonido…depende del tipo de fichero con el que trates.
    Espero haberte ayudado

  3. Muchísimas gracias por responderme lo probaré a ver que tal. No es muy importate esto de dividirlos pero lo porbaré que no se tarda nada.

    Venga un saludo y gracias de nuevo.

  4. Otra duda me ha venido a la cabeza. ¿por que si Microsoft es capaz de unirlos porque no es capaz de separarlo desde Ms-Dos? ¿Existe algún comando o ejecutable .com que permita esto? Es que me gustaría separar un archivo .rar desde Ms-Dos sin necesidad de extraerlo o volver a comprimir y ponerle que me lo separe en partes.
    Muchas gracias

  5. Alvaro el problema a la hora de dividir un archivo con MSDOS es que tienes que conocer el formato de los mismo y por ejemplo si tienes un AVI para que al dividirlo resulten dos archivos que se puedan ver deberás mantener unas reglas con respecto a su cabecera. Esto obligaría a conocer todos los tipos de archivos, algo a todas luces imposible.

    No estoy seguro que la opción /b consiga reagrupar cualquier tipo de fichero correctamente, más bien creo que lo que hará será una copia de los bytes de uno a continuación del otro.

  6. Hola,

    Tengo un problema al copiar archivos txt de DOS utilizando aaa.txt + bbb.txt rrr.txt . Al procesar el comando al final del archivo rrr.txt se crea un caracter indeseado que parace indicar fin de archivo. Como lo evito o lo elimino sin entrar al editor?.
    Mil gracias por la ayuda

    • acabo de leer el problema de la marca decfin de archivo al copiar 2 archivos txt que tenias. Lo has podido solucionar ?
      porque yo tengo el mismo problema.
      Podrias ayudarme por favor

  7. Puff eso si que es una buena pregunta nunca me he fijado si sucede eso… Pa mi que eso no tiene solución sencilla…Pero todo es posible…

    Un Saludo…

  8. estimados no se si sere tonto, pero no me resulta. quiero copiar una carpeta completa dentro de otra
    yo coloco esta formula:

    set a=\\adascldmc02\publico\Presupuesto\Presup~4\Inform~1
    set b=\\adachafle02\publico\Estrat~1\Ppto_II\Reportes

    xcopy*.* %a% %b%

    set c=\\adascldmc02\publico\Presupuesto\Presup~4\pptono~1
    set d=\\adachafle02\publico\Estrat~1\Ppto_II\Reportes

    xcopy*.* %c% %d%

    set e=\\adascldmc02\publico\Presupuesto\Presup~4\pptovs~1
    set f=\\adachafle02\publico\Estrat~1\Ppto_II\Reportes

    xcopy*.* %e% %f%

    pause

    Favor decirme que esta mal

    muchas gracias y muy buena su pagina

  9. Buenas Daniel, lo primero de todo, te aconsejo que escribas:

    xcopy *.* %a% %b% /Y

    en vez de:

    xcopy*.* %a% %b%

    Después preguntarte una cosa, ¿Estas intentando copiar ficheros locales de tu ordenador o existentes en una carpeta de red?

    Si es lo segundo habría que ver si tienes permisos para copiar archivos a la carpeta que le indicas.

    Espero haberte podido ayudar, sino te va, dí lo

    Saludos 🙂

  10. Estimado, e probado con lo que me dices pero no resulta. sale: «este comando no es reconocido» o algo asi.

    por otro lado si, estoy con discos de red, y poseo todos los permisos para ellos, de hecho tengo automatizaciones .bat pero solo con el comando copy (en el que copio solo archivos excel) pero ahora quiero copiar varias carpetas completas dentro de otra y pisar los archivos que estan en ella.

    ¿Como puedo hacerlo?

    tengo esta carpeta:
    \\adascldmc02\publico\Presupuesto\Presup~4\Inform~1

    y quiero copiarla en este sitio:
    \\adachafle02\publico\Estrat~1\Ppto_II\Reportes

  11. Daniel, intenta probar esto con esto:

    xcopy \\adascldmc02\publico\Presupuesto\Presup~4\Inform~1\*.* \\adachafle02\publico\Estrat~1\Ppto_II\Reportes /e /y /c

    Y dinos si te funciona,

    Saludos

  12. Hola en realidad lo que tengo es una pregunta, por favor no se si se puede poner aqui pero necesito solucion a mi problema.

    Necesito crear un .bat para copiar los archivos desde una carpeta a otra(solo los archivos), el problema es que la carpeta donde se encuentran los archivos cambia de nombre diariamente y no puedo crear el fichero por lotes dentro de ella pues la carpeta primero se borra y despues se crea una nueva con un nombre diferente y con caracteres alfanumericos.

    Por favor, si se puede hacer necesito ayuda.

    Gracias de antemano.

  13. Estimados, muy interesante y util este tema de verdad me parece muy buen punto, me gustaria saber si existe algun comando que pueda utilizar para que se sobrescriban automaticamente los datos copiados, saludos cordiales

  14. Hola quisiera saber como puedo hacer o con que comando o caracteres puedo remplazar el nombre de una carpeta:

    @xcopy «%userprofile%\Tempo\Nombre de la Carpeta\Datos\*» «%username%\Tempo\CDatos» /i/

    Lo que quiero hacer es copiar la informacion de la carpeta Datos en una nueva que se llame CDatos, pero el problema es que dntro de la carpeta Tempo Exiosten diferentes carpetas, por ejemplo año1, año2, programas, documentos, etc, y a cada una de estas carpetas se les crea automaticamente una carpeta que se llama Datos Mi duda es como hacerle para que copie lodatos de la carpeta Datos de cada una de las carpetas anteriores:

    ************************************
    %userprofile%\Tempo\Año1\Datos
    %userprofile%\Tempo\Año2\Datos
    %userprofile%\Tempo\Programas\Datos
    %userprofile%\Tempo\Documentos\Datos
    %userprofile%\Tempo\Etc, etc\Datos
    ************************************

    Quiero copiar todo lo que hay en datos en otra carpeta, ¿Con que caracteres sustituyo donde dice año1, año2, etc, et.?

    AYUDA

  15. quiero crear un fichero copiaseg.bat que realice una copia de seguridad. Debe ser una copia incremental de solo aquello que sea nuevo o que haya cambiado desde la ultima copia de seguridad, no debera preguntar cada vez que se sobreescriba un archivo

  16. Hola! me encontré con todo esto buscando algo específico en la web: es posible realizar la copia del path, fecha, hora y nombre de los archivos de toda una estructura de directorio y volcarla en un xls por ejemplo? Desde ya, muchas gracias!
    Slds!

  17. que tal FELICIDADES!!! y lo digo en general me encanta leer geekets y este curso es practico y bueno..
    unas dudas estuve realizando pruebas la cuestion es que tanto en xp y windows vista/seven cambia la ubicacion de las carpetas. como puedo realizar un copeo de una carpeta con sus subdirectorios y ejecutando el propio .bat desde donde estare respaldando la informacion ejem.
    realizo esto xcopy «%userprofile%\Documents\*.*» nueva\ /y /e

    esto desde una memoria usb por decirlo asi.
    no me realiza nada por que?
    podian ayudarme aclar el panorma gracias

  18. Para el compañero Enrique (no lei respuesta sobre su inquietud)… «se crea un caracter indeseado que parace indicar fin de archivo». Ese caracter se elimina usando el parametro /b (Indicando que sera un archivo binario)… Saludos

  19. Hola,
    Me ha encantado este blog, ya que he realizado un archivo .bat, para hacer copias de varios directorios, y me ha salido perfecto…
    Solo me queda una duda… podria antes de que se copie ver la capacidad de lo que quiero copiar, es por si hay espacio suficiente o no???
    Un Saludo…

  20. necesito ayuda
    tengo la siguiente situacion
    quiero copiar unos archivos a una carpeta(A),que esta dentro de otro carpeta(B).El problema esta que la carpeta (A) tiene un nombre de 3 palabras separadas (x y z). Al copiar me da error, pienso yo que es este nobre separado por tres palabras, a la hora de escribirlo en MS-Dos como lo escribo separado.
    grasias

  21. Quiero realizar una salva de una Carpeta cada 1 hora, no me interesa tanto el tiempo, como la duda de que no deseo que la ultima copia que realice se borre, en otras palabras quiero que cada vez que ejecute el .bat, me realice una copia sin borrar la anterior salva que realice.

  22. Una pregunta alguien pudo realizar esto con la carpeta de origen en red y la carpeta de destino local les pongo mi linea pero no funciona tengo todos los permisos podrian ayudarme?

    xcopy \\S01\dac\Usuarios\VENTAS\Ordenes\*.* D:\Destino\/Y /E /C

  23. Una pregunta en el caso que quiera copiar un datafile de oracle existe algun problema cuando la ruta contiene una carpeta con nombre separado por espacios, mas exacto:
    quiero copiar
    c:\documents and settings\oracle\desktop\ejemplos\userdata.dbf
    a
    c:\documents and settings\oracle\desktop\ejemplos\backups
    gracias….

  24. Quisiera saber si puedo copiar (lo mismo que dice Andrés) así:

    C:\Archivos de Programa\Mi copia\prueba.txt

    a

    C:\Archivos de Programa\Aqui quiero la copia\

    Notese que deje muchos espacios ya que al parecer ese es el problema que tengo

  25. yo no soy informatico ni nada por el estilo , solo un friki que trata de hacer un autoejecutable para copia de seguridad .

    He leido la entrada del comando xcopy y …¿ no faltan unas comillas en el comando xcopy para que funcione bien ? algo asi:

    xcopy «C:\Documents and Settings\federico\Mis documentos» «D:\seguridad » /E /H /R /Y /I /D

  26. Hello, pedazo de muertos sin vida

  27. y que ch4…MALOTE!

  28. No existo,no respiro,no veo,no como y no planto pinos

  29. tengo el culo abierto

  30. Hablad aki,k me siento solo

  31. que buena chris

  32. deseaba saber como abro un dirrectorio cuyo nombre este en espacios, les explico:
    lo intente con el ~1 desde mi computador y si me funcionó perfectamente, pero cuando quiero acceder a una carpeta del sitio de red no quiere funcionar, ademas lo intente tambien usando las comillas (» «)

    start \\nombre\nombre espacio\
    start \\nombre\nombre~1\
    start «\\nombre\nombre espacio\»
    start «file:\\nombre\nombre espacio\»

    start c:\users\docuement~1 (en esto si me funciona muy bien)

    el problemas es al acceder a una carpeta de red

  33. hola a todos,

    Este inconveniente no es directamente relacionado pero solicito ayuda. Resulta que utilice el comando para unir dos archivo .air y .rar como resultado quedo un .air, entonces no puedo abrir el archivo .rar porque si lo abro con Winrar me abre y muestra el archivo .air.

    Es posible a travez de un comando o un software separar estos archivos.

    Gracias por su ayuda.

  34. Excelente informe. Muy completo y detallado.

    Se agradece muchísimo.

    Saludos.

  35. cómo puedo hacer un archivo .bat para copiar varios archivo elegidos:

    copiar archivos que están en:

    c:\di1\file1.doc
    c:\di1\file3.doc
    c:\di1\file9.doc
    c:\di1\otrofile5.mp3
    c:\di1\otrofile8.mp3

    hacia :

    d:\dir2\

  36. Hola como copio el contenido de un archivo .txt a otro

  37. Mi pregunta es especifica, necesito copiar toda la carpeta de documentos de un disco duro que ya no quiso arrancar, sinembargo si puedo arrancar con una USB y accesar a dicha carpeta.

    mi pregunta es: ¿¿¿que comandos debo utilizar si conecto una unidad USB limpia y es ahi donde quiero copiar toda(s) la(s) carpeta(s)???

    ejemplo de mi unidad USB limpia: d:

    ejemplo de mi ruta de documentos: c:users/asus/documents
    de aqui de esta carpeta necesito todo.

    Gracias y felicidades por sus informaciones

    ahi se queda mi mail.-
    crazygifts@live.com

  38. Hola esta genial el instructivo, era justo lo que necesitaba para hacer el back up de mis archivos una vez termino una jornada de trabajo. Sin embargo, cuando uso el comando /Y no copia las modificaciones de los archivos que modifico en las subcarpetas, lo he dejado con el comando /S y me pregunta uno a uno todos los archivos que deseo sobrescribir.
    ¿hay alguna forma que no me pregunte y sobrescriba todos los archivos modificados?

    Muchisimas gracias por todo esto

  39. source Especifica el archivo que desea copiar.
    destination Especifica la ubicación y el nombre de los archivos nuevos.
    /a Copia archivos con el atributo de modificado. Este modificador no cambia el atributo.
    /m Copia archivos con el atributo de modificado y desactiva el atributo de modificado.
    / d:date Copia archivos cambiaron durante o después de la fecha especificada.
    /p Le pide que antes de crea cada archivo de destino.
    /s Copias carpetas y subcarpetas excepto los vacíos.
    /e Copia cualquier subcarpeta, incluso si está vacío.
    /w Le solicita que presione una tecla antes de copiar.
    /c Continúa copiando incluso si se producen errores.
    /i Si el destino no existe y que está copiando más de un archivo, este modificador se supone que el destino es una carpeta.
    /q No muestra los nombres de archivo mientras se copian.
    /f Código fuente completo de muestra y los nombres de archivo de destino mientras se copian.
    /l Muestra los archivos que se van a copiar.
    /h Copias ocultadas y archivos del sistema.
    /r Sobrescribe los archivos de sólo lectura.
    /t Crea una estructura de carpetas, pero no copia los archivos. No incluye carpetas vacías o subcarpetas. Utilice el /t con el modificador /e para incluir carpetas vacías y las subcarpetas.
    /u Actualiza los archivos que ya existen en ese destino.
    /k Copia los atributos. Comandos típica xcopy restablecerán atributos de sólo lectura.
    /y Sobrescribe los archivos existentes sin preguntarle.
    /y Pregunta antes de sobrescribir los archivos existentes.
    /n Copia usando los nombres cortos generados.

  40. Tengo alrededor de 100 carpetas que contienen archivos TXT y necesito agrupar los archivos en uno solo adicionando a los registros agrupados la ruta donde se encuentran los archivos (puede ser al inicio de cada registro) …….. Me puede ayudar por faor….?… Gracias

  41. hola!!

    tengo un problema quiero mover archivos de una carptea raíz a carpetas por dia, los archivos son .jpg con la siguiente estructura 2015-07-22-04-25-25.jo (yyyy-mm-dd-hh-mm-ss.jpg), pero solo quiero moverlos usando el año mes y dia del nombre del archivo y que no tome en cuenta el demás nombre del archivo. pueden ayudarme.
    gracias

  42. Como puedo hacer para que mediante de un documento .txt que contiene una lista de documentos que un .bat copie solo los documentos que se encuentran en la Lista del .txt y no todos los demas.

  43. Hola, estoy realizando una copia en paralelo (dos bat)de los mismos archivos archivos pero a carpetas diferentes, pero uno de los bat falla ya que el archivo esta siendo utilñizado por otro proceso. Intente dando un delay entre bat y bat pero falla igual

  44. quiero hacer copias de seguridad con copy pero sin pisar las copias anteriores con el mismo nombre.

  45. Hola. Buen día, alguien me puede auxiliar con una duda? Quiero copiar todo lo de mi disco duro que son como cinco megas en varios diskettes, pero el comando xcopy no me deja. Algún idea?

  46. Recien estoy aprendiendo los comamdos como empezar desde cero

  47. necesito los comandos de mc dos para todo tipo de acciones basicas en una pc, como copiar , pegar , cortar, eliminar, y como hacer para robar archivos por su extencion copiarlos en un dispoositivo extraible

    Deje una respuesta

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

    Logo
    Restablecer la contraseña