xcopy - Copia avanzada de archivos
Qué es el comando xcopy
El comando xcopy es un comando avanzado para copiar archivos y directorios. Para copiar una carpeta junto con su contenido, la forma básica es xcopy origen destino /s /e /i. En comparación con el comando básico copy, tiene las siguientes características:
- Copia con subdirectorios: copia recursivamente toda una estructura de directorios
- Muchas opciones: filtrado por fecha o atributo de archivo, gestión de errores y más
- Compatibilidad con copias de seguridad: admite copias incrementales que copian solo los archivos modificados
- Compatibilidad con redes: puede reanudar una copia interrumpida a través de la red (
/z)
Este artículo explica xcopy desde el uso básico hasta combinaciones prácticas de opciones.
Conceptos básicos de xcopy
La sintaxis básica de xcopy es la siguiente.
xcopy [origen] [destino] [opciones]
Copiar un solo archivo
El uso más sencillo es copiar un solo archivo.
Esto copia document.txt en el directorio C:\Backup\.
Copiar un directorio completo
La opción /s copia un directorio junto con sus subdirectorios.

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
Esto copia MyFolder y todos sus subdirectorios que no estén vacíos.
El comando básico copy no puede manejar subdirectorios, mientras que xcopy puede copiar toda una estructura de directorios con /s. Consulta
para más detalles.
xcopy sigue siendo útil, pero robocopy es más adecuado cuando necesitas reintentos ante fallos o replicación (mirroring).
Opciones principales
/s - Copiar subdirectorios
Copia también los subdirectorios que no estén vacíos.
/e - Copiar también los subdirectorios vacíos
Se usa junto con /s para copiar también los subdirectorios vacíos.
Combinar /s /e copia la estructura completa, incluidos los directorios vacíos. Es útil para copias de seguridad y para duplicar directorios de plantilla.
/i - Tratar el destino como un directorio
Si el destino no existe, se crea como directorio.
Con esta opción ya no aparece la pregunta de si el destino es un nombre de archivo o de directorio.
Si el destino no existe y no termina en barra invertida, xcopy puede preguntar si debe tratarlo como archivo o como directorio. En archivos por lotes, añade /i para eliminar la ambigüedad.
/y - Omitir la confirmación de sobrescritura
Sobrescribe automáticamente los archivos existentes, sin pedir confirmación.
Con /y, los archivos existentes se sobrescriben sin confirmación. Ten cuidado de no sobrescribir por error archivos importantes.
/d - Copia incremental por fecha
Copia un archivo solo si el origen es más reciente que el de destino (o si no existe en el destino).
También puedes copiar solo los archivos modificados a partir de una fecha determinada.
El formato /d:m-d-y es siempre mes-día-año, sea cual sea la configuración regional de Windows. En el ejemplo anterior, 04-21-2026 es el 21 de abril de 2026. Con /d solo, sin fecha, se copian únicamente los archivos más recientes que los del destino.
/m - Copiar solo los archivos con el atributo de archivo
/m copia solo los archivos que tienen activado el atributo de archivo y después desactiva ese atributo.
/m se usa a veces en copias de seguridad. Para entender el atributo de archivo, consulta también
.
/u - Actualizar solo los archivos existentes
Actualiza solo los archivos que ya existen en el destino.
/h - Incluir archivos ocultos y de sistema
Copia también los archivos ocultos y de sistema, que normalmente se omiten.
/k - Conservar el atributo de solo lectura
Aplica al archivo de destino el atributo de solo lectura del archivo de origen.
/r - Sobrescribir archivos de solo lectura
Sobrescribe también los archivos con el atributo de solo lectura.
/v - Verificar la copia
Verifica que cada archivo se haya copiado correctamente.
/q - Modo silencioso
No muestra los nombres de archivo durante la copia.
/f - Mostrar rutas completas durante la copia
Muestra las rutas completas de origen y destino.
/l - Simular la copia
Muestra la lista de archivos que se copiarían, sin copiar nada.
/l permite ver qué archivos se copiarían antes de copiar de verdad. Es útil antes de copiar muchos archivos.
/t - Copiar solo la estructura de directorios
Para crear solo la estructura de carpetas sin copiar archivos, usa /t.
/j - Copiar archivos grandes sin búfer
/j puede ayudar al manejar archivos grandes.
/exclude - Excluir rutas que contengan determinadas cadenas
Puedes excluir rutas de la copia usando un archivo de texto con las condiciones de exclusión.
xcopy Source Destination /s /exclude:exclude.txt
Escribe una cadena por línea en exclude.txt. Un archivo se excluye cuando la ruta completa de origen contiene la cadena, así que escribe entradas como .tmp o \node_modules\.
/c - Continuar si hay errores
Aunque algunos archivos no se puedan copiar, por ejemplo por acceso denegado, se sigue copiando el resto.
/z - Modo reiniciable
Si la conexión se corta mientras se copia por la red, la copia puede reanudarse tras volver a conectar.
Ejemplos prácticos
Crear una copia de seguridad
Un ejemplo que hace una copia de seguridad de toda una carpeta de proyecto.
/s /e: copia todo, incluidos los directorios vacíos/h: copia los archivos ocultos/i: crea automáticamente el destino como directorio/y: sobrescribe sin confirmación
Copia de seguridad incremental
Un ejemplo que copia solo los archivos modificados.
Con /d, solo se copian los archivos más recientes que los del destino (incluidos los que aún no se han copiado).
Copiar archivos modificados desde una fecha concreta
Esto copia solo los archivos modificados a partir del 1 de enero de 2025.
Copiar solo la estructura de directorios
Con /t no se copia ningún archivo y solo se crea la estructura de directorios.
Una copia completa que incluye archivos de solo lectura
/s /e: copia todos los subdirectorios/r: sobrescribe los archivos de solo lectura/k: conserva el atributo de solo lectura/h: copia los archivos ocultos
Ejemplos de archivos por lotes
Script de copia de seguridad diaria
@echo off
setlocal
REM Configuración de la copia
set "SOURCE=C:\Projects"
set "DESTINATION=D:\Backup\Projects"
set "LOGFILE=C:\Backup\backup_log.txt"
echo ======================================== >> "%LOGFILE%"
echo Copia iniciada: %DATE% %TIME% >> "%LOGFILE%"
echo ======================================== >> "%LOGFILE%"
REM Ejecutar la copia incremental
xcopy "%SOURCE%" "%DESTINATION%\" /s /e /i /d /y /h /r >> "%LOGFILE%" 2>&1
REM El código de salida 1 (nada que copiar) solo indica que no hubo cambios, así que no se trata como error
if errorlevel 2 (
echo Error: la copia de seguridad falló >> "%LOGFILE%"
) else (
echo La copia de seguridad se completó correctamente >> "%LOGFILE%"
)
echo Copia finalizada: %DATE% %TIME% >> "%LOGFILE%"
echo. >> "%LOGFILE%"
endlocal
Script de confirmación antes de copiar
@echo off
setlocal
set "SOURCE=C:\Source"
set "DESTINATION=C:\Destination"
echo Archivos que se copiarán:
echo ================================
xcopy "%SOURCE%" "%DESTINATION%\" /s /e /i /l
echo.
echo ¿Copiar los archivos indicados arriba? (Y/N)
choice /c YN /n
if errorlevel 2 goto :cancel
if errorlevel 1 goto :copy
:copy
echo.
echo Iniciando la copia...
xcopy "%SOURCE%" "%DESTINATION%\" /s /e /i /y
echo La copia ha finalizado.
goto :end
:cancel
echo La copia se canceló.
goto :end
:end
endlocal
Códigos de salida y solución de problemas
xcopy devuelve los siguientes códigos de salida (ErrorLevel) según el resultado. if errorlevel N comprueba “N o mayor”, así que comprueba desde el valor más alto hacia abajo.
| Código de salida | Descripción |
|---|---|
| 0 | Los archivos se copiaron sin errores |
| 1 | No se encontraron archivos para copiar |
| 2 | El usuario pulsó Ctrl+C para terminar xcopy |
| 4 | Error de inicialización (memoria o espacio en disco insuficiente, sintaxis no válida, etc.) |
| 5 | Error de escritura en disco |
Ejemplo de gestión de errores
@echo off
xcopy Source Destination /s /e /i /y
if errorlevel 5 goto :disk_error
if errorlevel 4 goto :init_error
if errorlevel 2 goto :user_cancel
if errorlevel 1 goto :no_files
goto :success
:disk_error
echo Error: se produjo un error de escritura en disco
goto :end
:init_error
echo Error: error de inicialización (memoria o espacio en disco insuficiente, sintaxis no válida, etc.)
goto :end
:user_cancel
echo Cancelado por el usuario
goto :end
:no_files
echo No se encontraron archivos para copiar
goto :end
:success
echo Los archivos se copiaron correctamente
:end
Resumen
Este artículo trató lo siguiente sobre el comando xcopy:
- Uso básico: copiar archivos y directorios
- Opciones principales: copia de subdirectorios, filtrado por fecha, gestión de atributos, copia solo de la estructura y más
- Ejemplos prácticos: copias de seguridad, copia incremental, duplicar una estructura de directorios
- Uso en archivos por lotes: scripts de copia diaria y más
- Gestión de errores: tratamiento adecuado de los códigos de salida
xcopy ofrece una copia más avanzada que copy y es muy útil para automatizar copias de seguridad y la gestión de archivos. Combinando opciones como /s /e /d puedes crear una copia incremental eficiente.
Si necesitas una copia más avanzada o replicación, considera robocopy, que ofrece aún más funciones que xcopy.