xcopy

Copia archivos y directorios, incluidos los subdirectorios.

Para obtener ejemplos de cómo utilizar este comando, consulte Ejemplos.

Sintaxis

Xcopy <Source> [<Destination>] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d [:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]

Parámetros

Parámetro Descripción
<Fuente> Necesario. Especifica la ubicación y el nombre del archivo cuyo nombre desea copiar. Este parámetro debe incluir una unidad o una ruta de acceso.
[<Destination>] Especifica el destino de los archivos que desea copiar. Este parámetro puede incluir una letra de unidad y dos puntos, un nombre de directorio, un nombre de archivo o una combinación de estos.
/w Muestra el siguiente mensaje y espera la respuesta antes de empezar a copiar archivos:
Presione cualquier tecla para empezar a copiar archivos
/p Le pide que confirme si desea crear cada archivo de destino.
/C Omite los errores.
/v Comprueba cada archivo a medida que se escribe en el archivo de destino para asegurarse de que los archivos de destino son idénticos a los archivos de origen.
/q Suprime la presentación de mensajes de xcopy.
/f Muestra los nombres de archivo de origen y de destino al copiar.
/l Genera una lista de archivos que deben copiarse, pero no los copia activamente.
/g Crea archivos de destino descifrados cuando el destino no admite cifrado.
/d [:MM-DD-YYYY] Solo copia los archivos de origen modificados en o después de la fecha especificada. Si no incluye un valor MM-DD-AAAA, xcopy copia todos los archivos de origen que sean más recientes que los archivos de destino existentes. Esta opción de línea de comandos permite actualizar los archivos que han cambiado.
/U Solo copia los archivos del origen que existen en el destino.
/i Si el origen es un directorio o contiene caracteres comodín y el destino no existe, xcopy asume que el destino especifica un nombre de directorio y crea un directorio nuevo. A continuación, xcopy copia todos los archivos especificados en el nuevo directorio. De forma predeterminada, xcopy le pide que especifique si el destino es un archivo o un directorio.
/s Copia directorios y subdirectorios, a menos que estén vacíos. Si omite /s, xcopy funciona dentro de un único directorio.
/e Copia todos los subdirectorios, incluso si están vacíos. Use /e con las opciones de línea de comandos /s y /t.
/t Copia solo la estructura del subdirectorio (es decir, el árbol), no los archivos. Para copiar directorios vacíos, debe incluir la opción de línea de comandos /e.
/k Copia los archivos y conserva el atributo de solo lectura en los archivos de destino si están presentes en los archivos de origen. De forma predeterminada, xcopy quita el atributo de solo lectura.
/r Copia los archivos de solo lectura.
/h Copia archivos con atributos de archivo ocultos y del sistema. De forma predeterminada, xcopy no copia archivos ocultos ni del sistema
/a Copia solo los archivos de origen que tienen establecidos sus atributos de archivo de almacenamiento. /a no modifica el atributo de archivo de almacenamiento del archivo de origen. Para obtener información sobre cómo establecer el atributo de archivo de almacenamiento mediante attrib, consulte Vínculos relacionados.
/m Copia solo los archivos de origen que tienen establecidos sus atributos de archivo de almacenamiento. A diferencia de /a, /m desactiva los atributos de archivo de almacenamiento en los archivos especificados en el origen. Para obtener información sobre cómo establecer el atributo de archivo de almacenamiento mediante attrib, consulte Vínculos relacionados.
/n Crea copias con los nombres cortos de directorio o archivo NTFS. /n es necesario cuando se copian archivos o directorios de un volumen NTFS a un volumen FAT o cuando se requiere la convención de nomenclatura del sistema de archivos FAT (es decir, 8.3 caracteres) en el sistema de archivos de destino. El sistema de archivos de destino puede ser FAT o NTFS.
/o Copia la información de la propiedad del archivo y la lista de control de acceso discrecional (DACL).
/x Copia la configuración de auditoría de archivos y la información de la lista de control de acceso del sistema (SACL) (implica /o).
/exclude:FileName1[+[FileName2]][+[FileName3]( )] Especifica una lista de archivos. Debe especificarse al menos un archivo de origen. Cada archivo contendrá cadenas de búsqueda con cada cadena en una línea independiente del archivo. Cuando cualquiera de las cadenas coincide con cualquier parte de la ruta de acceso absoluta del archivo que se va a copiar, ese archivo quedará excluido de la copia. Por ejemplo, si se especifica la cadena obj, se excluirán todos los archivos situados debajo del directorio obj o todos los archivos con la extensión .obj.
/y Suprime la solicitud para confirmar que desea sobrescribir un archivo de destino existente.
/-y Solicita que confirme que desea sobrescribir un archivo de destino existente.
/z Copia a través de una red en modo reiniciable.
/b Copia el vínculo simbólico en lugar de los archivos. Este parámetro se incorporó en Windows Vista®.
/j Copia archivos sin almacenamiento en búfer. Recomendado para archivos muy grandes. Este parámetro se agregó en Windows Server 2008 R2.
/compress Solicita la compresión de red durante la transferencia de archivos cuando corresponda.
/? Muestra la ayuda en el símbolo del sistema.
/sparse Permite conservar el estado disperso de los archivos durante la copia.

Comentarios

  • Uso de /z

    Si pierde la conexión durante la fase de copia (por ejemplo, si el servidor se queda sin conexión), se reanuda después de restablecerla. /z también muestra el porcentaje de la operación de copia completada para cada archivo.

  • Uso de /y en la variable de entorno COPYCMD.

    Puede usar /y en la variable de entorno COPYCMD. Puede invalidar este comando mediante /-y en la línea de comandos. De forma predeterminada, se le pedirá que sobrescriba.

  • Copia de archivos cifrados

    La copia de archivos cifrados en un volumen que no admite EFS produce un error. Descifre primero los archivos o copie los archivos en un volumen que admita EFS.

  • Cómo agregar archivos

    Para anexar archivos, especifique un único archivo como destino, pero varios archivos como origen (es decir, mediante caracteres comodín o con el formato archivo1+archivo2+archivo3).

  • Valor predeterminado para el destino

    Si omite el destino, el xcopy comando copia los archivos en el directorio actual.

  • Cómo especificar si el destino es un archivo o directorio

    Si el destino no contiene un directorio existente y no termina con una barra diagonal inversa (), aparece el siguiente mensaje:

    Does <Destination> specify a file name or directory name on the target(F = file, D = directory)?
    

    Presione F si desea que el archivo o los archivos se copien en un archivo. Presione D si desea que el archivo o los archivos se copien en un directorio.

    Puede suprimir este mensaje mediante la opción de línea de comandos /i, lo que hace que xcopy asuma que el destino es un directorio si el origen es más de un archivo o directorio.

  • Uso del comando xcopy para establecer el atributo de archivo para los archivos de destino

    El comando xcopy crea archivos con el conjunto de atributos de archivo, independientemente de si este atributo se estableció o no en el archivo de origen. Para obtener más información sobre los atributos de archivo y attrib, consulte Vínculos relacionados.

  • Comparación de xcopy y diskcopy

    Si tiene un disco que contiene archivos en subdirectorios y quiere copiarlo en un disco que tenga un formato diferente, use el comando xcopy en lugar de diskcopy. Dado que el comando diskcopy copia los discos por pistas, los discos de origen y de destino deben tener el mismo formato. El comando xcopy no tiene este requisito. Use xcopy a menos que necesite una copia de imagen de disco completa.

  • Error de memoria insuficiente

    Puede producirse un error de "memoria insuficiente" si se ejecuta xcopy para copiar un archivo o carpeta cuya ruta de acceso de nombre de archivo es superior a 255 caracteres.

  • Códigos de salida para xcopy

    Para procesar los códigos de salida devueltos por xcopy, use el parámetro ErrorLevel en la línea de comandos if de un programa por lotes. Para obtener un ejemplo de un programa por lotes que procese códigos de salida mediante if, consulte Vínculos relacionados. En la siguiente tabla se enumeran los códigos de salida y una breve descripción de su significado.

    Código de salida Descripción
    0 Los archivos se copiaron sin errores.
    1 No se encontraron archivos para copiar.
    2 El usuario presionó CTRL+C para finalizar xcopy.
    4 Error de inicialización. No hay suficiente memoria o espacio en disco, o ha escrito un nombre de unidad no válido o una sintaxis no válida en la línea de comandos.
    5 Error de escritura en disco.

Ejemplos

1. Para copiar todos los archivos y subdirectorios (incluidos los subdirectorios vacíos) de la unidad A a la unidad B, escriba:

xcopy a: b: /s /e

2. Para incluir cualquier sistema o archivos ocultos en el ejemplo anterior, agregue la opción de línea de comandos /h como se indica a continuación:

xcopy a: b: /s /e /h

3. Para actualizar archivos en el directorio \Reports con los archivos del directorio \Rawdata que han cambiado desde el 29 de diciembre de 1993, escriba:

xcopy \rawdata \reports /d:12-29-1993

4. Para actualizar todos los archivos que existen en \Reports en el ejemplo anterior, independientemente de la fecha, escriba:

xcopy \rawdata \reports /u

5. Para obtener una lista de los archivos que va a copiar el comando anterior (es decir, sin copiar realmente los archivos), escriba:

xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out

El archivo xcopy.out enumera todos los archivos que se van a copiar.

6. Para copiar el directorio \Customer y todos los subdirectorios en el directorio \\Public\Address en la unidad de red H:, conserve el atributo de solo lectura y se le solicite cuando se cree un nuevo archivo en H:, escriba:

xcopy \customer h:\public\address /s /e /k /p

7. Para emitir el comando anterior, asegúrese de que xcopy crea el directorio \Address si no existe, y suprima el mensaje que aparece al crear un directorio nuevo, agregue la opción de línea de comandos /i como se indica a continuación:

xcopy \customer h:\public\address /s /e /k /p /i

8. Puede crear un programa por lotes para realizar operaciones xcopy y usar el comando por lotes if para procesar el código de salida si se produce un error. Por ejemplo, el siguiente programa por lotes usa parámetros reemplazables para los parámetros de origen y destino xcopy:

@echo off
rem COPYIT.BAT transfers all files in all subdirectories of
rem the source drive or directory (%1) to the destination
rem drive or directory (%2)
xcopy %1 %2 /s /e
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit
:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit
:abort
echo You pressed CTRL+C to end the copy operation.
goto exit
:exit

Para usar el programa por lotes anterior para copiar todos los archivos del directorio C:\Prgmcode y sus subdirectorios en la unidad B, escriba:

copyit c:\prgmcode b:

El intérprete de comandos sustituye C:\Prgmcode por %1 y B: para %2 y, a continuación, usa xcopy con las opciones de línea de comandos /e y /s. Si xcopy encuentra un error, el programa por lotes lee el código de salida y va a la etiqueta indicada en la instrucción IF ERRORLEVEL adecuada y, a continuación, muestra el mensaje adecuado y sale del programa por lotes.

9. En este ejemplo se copian todos los directorios no vacíos, además de los archivos con la extensión de archivo asociada después del símbolo del asterisco.

xcopy .\toc*.yml ..\..\Copy-To\ /S /Y

rem Output example.
rem  .\d1\toc.yml
rem  .\d1\d12\toc.yml
rem  .\d2\toc.yml
rem  3 File(s) copied

En el ejemplo anterior, este valor de parámetro de origen determinado .\toc*.yml copia los mismos 3 archivos aunque se quitaran sus dos caracteres de ruta de acceso .\. Sin embargo, no se copiaría ningún archivo si el carácter comodín asterisco se quitó del parámetro de origen, lo que lo convierte en .\toc.yml.