Comando MS-DOS: Copy y Xcopy | Geekets


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.

- Publicidad -

Posts Relacionados

Autor: nekrodomus Hace unos 30 años nací en Sevilla y aunque desde la infancia he estado rodeado de ordenadores no puede decirse que haya estado vinculados a ellos hasta que no empece a estudiar una carrera superior. Por suerte para el mundo informático mis notas no fueron lo suficientemente buenas como para hacerme médico, por lo que hubo un giro en mis vocaciones y empecé a estudiar el título de Técnico Superior en Informática de Sistemas, después de lo cual pasé a estudiar la carrera de Ingeniería Técnica en Informática de Sistemas. Allí fue donde me pelee, junto con Enrique, con muchas asignaturas difíciles. Tras acabar la carrera, y casi sin darme cuenta, me vi trabajando en una consultora de informática de Madrid. Lugar en donde vivo actualmente y donde desarrollo labores de programador, diseñador gráfico.... Si te preguntas por lo que espero de este proyecto, pues comenzar en algo en lo debería de haberme puesto hace un tiempo. Siempre he estado interesado en los blogs y salvo algunos breves escarceos en este mundo, nunca me puse en serio a escribir, y es algo que quiero cambiar. Saludos, Carlos Jiménez

45 Comentarios

  1. Alvaro says:

    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. nekrodomus says:

    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. Alvaro says:

    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. Alvaro says:

    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. nekrodomus says:

    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. [...] un tiempo te enseñamos como podías usar un comando de ms-dos para copiar el contenido de una carpeta a otra y hacer de esta forma una copia de seguridad de tus datos. Esta tarea tal y como te la explicamos [...]

  7. Enrique says:

    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

  8. Álvaro says:

    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…

  9. Daniel says:

    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

  10. nekrodomus says:

    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 :)

  11. Daniel says:

    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

  12. nekrodomus says:

    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

  13. Luis says:

    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.

  14. Augusto says:

    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

  15. Prueba says:

    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

  16. jesus says:

    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

  17. [...] poco o mucho que aprendí de comandos de MS-DOS lo hice utilizando un gran libro La Biblia del MS-DOS, imagino que habrá mas de uno que aún se [...]

  18. [...] poco o mucho que aprendí de comandos de MS-DOS lo hice utilizando un gran libro La Biblia del MS-DOS, imagino que habrá mas de uno que aún se [...]

  19. Koala says:

    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!

  20. fedex says:

    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

  21. Jonas_M says:

    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

  22. José J. Canet says:

    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…

  23. Joanjunior says:

    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

  24. Osvaldo says:

    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.

  25. jose luis says:

    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

  26. Andrés says:

    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….

  27. bencho says:

    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

  28. ton says:

    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

  29. CH4 says:

    Hello, pedazo de muertos sin vida

  30. isaac says:

    y que ch4…MALOTE!

  31. Josemanolo says:

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

  32. ALBERTO says:

    tengo el culo abierto

  33. CH4 says:

    Hablad aki,k me siento solo

  34. ALBERTO says:

    que buena chris

  35. jhony says:

    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

  36. Carlos R says:

    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.

  37. Mike Sto says:

    Excelente informe. Muy completo y detallado.

    Se agradece muchísimo.

    Saludos.

  38. Alex says:

    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\

  39. tito says:

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

Responder entrada


Close
Please support the site
By clicking any of these buttons you help our site to get better