Mi amigo fiel, el comando xcopy.
Todos hemos copiado archivos de un sitio a otro.
Es una realidad, todos hemos copiado archivos de un sitio a otro.
Hoy los archivos se ‘arrastran’ con el cursor de una carpeta a otra carpeta, el sistema decide si los archivos deben copiarse o moverse (realizar una copia del origen en el destino o realizar una copia y además eliminarlos del origen) y en muy poco tiempo (depende de la velocidad de los componentes que intervienen) los archivos se han copiado.
El concepto de arrastrar, con el ratón, los archivos de una carpeta, una ubicación o un disco a otro destino es intuitiva y se aprende de forma fácil.
En este artículo vamos ha hablar de un comando que hace esa misma función, pero permite definir de forma más precisa como hacer esa copia. El comando ‘xcopy’ permite definir más detalladamente que copiar, como copiarlo, qué hacer en caso de error, que hacer en caso de duplicidad…. adicionalmente, este comando, gracias a la cantidad de parámetros que existen para ejecutarlo puede realizar cosas que el movimiento con el cursor no puede y sobre todo puede gestionar mejor los errores.
(El comando XCOPY como los comandos de línea de comandos deben ejecutarse siempre en el procesador de comandos de windows, -esa ventana de fondo negro que se accede desde el menú de inicio - símbolo del sistema-).
Sintaxis:
XCOPY origen destino parámetros
la sentencia comienza por el comando a ejecutar ‘XCOPY’ (puede ser en mayusculas o minusculas) se deja un espacio y se define el origen (de donde se van a copiar los datos), se deja otro espacio y se define el destino (a donde van a ir a parar los datos) y se deja un espacio y se añaden los parámetros que se consideren necesarios. Los parámetros también se separan con espacios.
Ejemplos:
En este ejemplo quiero hacer una copia de los archivos que tengo en el escritorio a un disco externo que he conectado a mi pc y tiene la letra F:
C:\>xcopy C:\Users\Usuario\Desktop f:\Copia_escritorio_2305\
Revisamos que va a ocurrir: primero se encuentra el comando xcopy, un espacio y el origen, esto es de donde se van a copiar. En este ejemplo se copian de la carpeta \Users\Usuario\Desktop que está en el disco C:. Esa carpeta es el escritorio de un usuario con el nombre ‘Usuario’ en este ordenador.
A continuación, separados por un espacio, se encuentra el destino. En este ejemplo es una carpeta con el nombre Copia_escritorio_2305 que se encuentra en el disco F:. Este es un buen nombre si hoy es 23/05 y estamos realizando un backup de el escritorio a día de hoy.
A continuación se encuentran los parámetros de ejecución. En este caso ninguno.
Tras pulsar intro se ejecuta el comando.
El resultado es que se copian todos los ficheros del escritorio a la carpeta destino en el disco F:. Si la carpeta no existe el comando la creará de forma automática, si la carpeta ya existe y además existe alguno de los ficheros a copiar nos preguntará si sobreescribir el fichero destino o no.
Hasta aquí todo bien, casi bien. ¿Que no hemos copiado?. Si el escritorio tiene carpetas con ficheros dentro NO se está copiando esa información, se copia solo lo que hay en el escritorio pero no la información que contienen las carpetas que puede haber dentro del escritorio. Esto es un fallo grande. Por suerte con un solo parámetro se puede solucionar:
C:\>xcopy C:\Users\Usuario\Desktop f:\Copia_escritorio_2305\ /s
La única diferencia con el comando anterior es que después de especificar el destino se añade un espacio y el parámetro /s que significa incluir subdirectorios.
En ese caso el ejemplo está bien, (casi bien,mejor que el anterior, pero se puede hacer mejor).
¿Qué ocurre si hay algún fallo?,¿cómo va a reaccionar el proceso de copia?.
Es mejor tener prevista la contestación a esas preguntas, por ejemplo con el parámetro /c se pide que el proceso de copia continúe aunque se produzca un error.
C:\>xcopy C:\Users\Usuario\Desktop f:\Copia_escritorio_2305\ /s /c
En este caso ya podemos decir que es un comando bien formulado.
Se pueden dar muchos ejemplos con diversos orígenes y destinos, de hecho se puede escribir la ruta completa o solo parte de la ruta teniendo en cuenta la carpeta desde la que se ejecuta (no recomiendo esta opción, es mejor escribir la ruta completa siempre, aunque sea más largo el comando).
En definición de la ruta hay que tener en cuenta que cualquier espacio separa origen de destino y un parámetro de otro, por lo tanto si tenemos una carpeta que tiene espacios en su nombre, hay que escribirla con doble comilla
C:\>xcopy C:\Users\Usuario\"Saved games" f:\Copia_juegos_2305\ /s /c
También se pueden seleccionar solo algunos ficheros.
Por ejemplo, en el escritorio tengo de todo pero solo quiero copiar los archivos de tipo ‘jpg’ (imagenes).
En ese caso, en el origen se tiene en cuenta esto en la selección:
C:\>xcopy C:\Users\Usuario\Desktop\*.jpg f:\Copia_escritorio_jpg\ /s /c
Con este comando copiamos desde el origen todos los archivos del tipo ‘jpg’ al destino (incluyendo cualquiera de los subdirectorios del origen)
Parámetros más habituales:
Entre los parámetros más habituales están:
/s que incluye subdirectorios (no vacíos)
/e igual que /s pero además copia los directorios vacíos
/t copia la estructura de directorios pero NO los ficheros
/c que continua en caso de error
/d copia solo los archivos cuya fecha en destino es anterior a la fecha en origen
/d:mes-dia-año copia archivos creados o modificados a partir de la fecha indicada en el parámetro
Más ejemplos con algun parametro especifico:
Por ejemplo quiero hacer una copia de la última versión de mis documentos en el disco externo.
C:\>xcopy C:\Users\Usuario\documents f:\Copia_documentos_ultima\ /c /d
como veis por los parámetros NO he incluido los subdirectorios (si quiero también los subdirectorios debo utilizar además el parámetro /s) pero el parametro que me interesa en este caso es el /d.
La primera vez que creas esta copia se copiaran todos los archivos de origen a destino.
Las siguientes veces que ejecutes este mismo comando solo se copian los archivos que se han creado o modificado desde la última vez que realizaste esta copia ya que valída si en el destino existe el mismo archivo y si el de origen es más nuevo que el de destino.
Por lo tanto si vuelves a ejecutar este mismo comando, ahora mismo, ya no copia nada, pero si creas o modificas algún fichero en origen este SI se copiara al destino…. haz la prueba, este parámetro es muy bueno para hacer una copia rápida que mantiene la última versión de tu copia de seguridad.
Si utilizas de vez en cuando el comando XCOPY se va convirtiendo en tu comando fiel, veras que con una sola línea de comando, puedes hacer cosas que con un copiar y pegar son casi imposibles. Espero que esta pequeña explicación te introduzca en un gran comando.