Windows Server

Error «La ruta de destino es demasiado larga» al copiar o mover archivos

Portada del artículo «Error «La ruta de destino es demasiado larga» al copiar o mover archivos» de Trucos Informáticos

Intentas copiar una carpeta o mover un archivo y Windows se detiene con un cuadro de error: «La ruta de acceso de destino es demasiado larga», o en sus variantes, «El nombre de archivo es demasiado largo para la carpeta de destino» o «La ruta es demasiado larga». El mensaje aparece en el Explorador de archivos, al extraer un archivo comprimido, al sincronizar con la nube o al ejecutar un script. En esta guía verás por qué ocurre, cuántos caracteres admite realmente Windows, cómo encontrar las rutas problemáticas y todas las formas de resolverlo, desde acortar nombres hasta habilitar las rutas largas del sistema.

Por qué aparece el error: el límite de 260 caracteres

En la API de Windows, la longitud máxima de una ruta es MAX_PATH, definida en 260 caracteres. Esa cifra incluye la letra de unidad, los dos puntos, las barras invertidas entre carpetas, el nombre del archivo y un carácter nulo final. Por ejemplo, en la unidad D la ruta máxima es «D:\» seguida de 256 caracteres. Es fácil superarla sin darse cuenta: una carpeta de proyecto con nombres descriptivos, varios niveles de subcarpetas y un archivo con un título largo llegan enseguida a los 260.

Hay que distinguir entre el sistema de archivos y las aplicaciones. NTFS admite rutas de hasta unos 32.767 caracteres (con componentes de hasta 255 caracteres cada uno). El límite de 260 es de la API clásica y de muchas aplicaciones, entre ellas el Explorador de archivos. Por eso es posible que una carpeta se haya creado sin problemas con un programa y que otro (o el mismo programa en otro equipo) no pueda copiarla.

Además, el destino suma: una ruta de origen de 200 caracteres puede ser válida, pero al copiarla a una carpeta de destino que ya tiene 100 caracteres, el resultado supera el límite. Por eso el mensaje habla del destino.

Solución 1: acorta los nombres o sube la carpeta de nivel

La solución más simple y la que menos efectos secundarios tiene es reducir la ruta:

  • Copia la carpeta a un destino más cercano a la raíz (por ejemplo, C:\Temp o D:\Datos) en lugar de a una ruta profunda.
  • Acorta los nombres de las carpetas superiores o inferiores.
  • Elimina niveles de subcarpetas innecesarios.
  • Evita nombres de archivo que repitan información que ya está en las carpetas.

Solución 2: usa Robocopy, que admite rutas largas

Robocopy, la herramienta de copia robusta de Windows, admite rutas largas de serie (de hecho, su opción /256 sirve para desactivar esa compatibilidad). Es la forma más fiable de copiar o mover estructuras con rutas largas:

# Copiar una carpeta completa con todas sus subcarpetas
robocopy "D:\Proyectos\Origen" "E:\Copia\Destino" /E /R:1 /W:1 /LOG:"C:\Temp\robocopy.log"

# Mover (copia y luego borra el origen)
robocopy "D:\Proyectos\Origen" "E:\Copia\Destino" /E /MOVE /R:1 /W:1

# Copiar conservando permisos y fechas (útil en servidores de archivos)
robocopy "D:\Datos" "E:\Datos" /E /COPYALL /R:1 /W:1 /LOG:"C:\Temp\datos.log"

Las opciones /R:1 /W:1 limitan los reintentos y las esperas en archivos bloqueados (por defecto son un millón de reintentos de 30 segundos), y /LOG guarda un registro de lo que se ha hecho. Antes de mover algo importante, haz primero una copia y verifica el resultado.

Solución 3: habilita las rutas largas en Windows

A partir de Windows 10 versión 1607, Microsoft eliminó las limitaciones de MAX_PATH en muchas funciones de archivo y directorio, pero con una condición: hay que activarlo y, además, la aplicación debe ser compatible. Para activarlo en el sistema:

New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1 -PropertyType DWord -Force

Es el valor LongPathsEnabled (DWORD, igual a 1) de la clave HKLM\SYSTEM\CurrentControlSet\Control\FileSystem. Reinicia el equipo para que todas las aplicaciones lo detecten: el valor se almacena en caché por proceso al usar por primera vez una función afectada. En una red de dominio puedes aplicarlo por directiva de grupo, en Configuración del equipo → Plantillas administrativas → Sistema → Sistema de archivos → Habilitar rutas de acceso largas de Win32, o con Intune.

La advertencia importante: activar el valor solo afecta a las aplicaciones que declaran en su manifiesto que admiten rutas largas (el elemento longPathAware). Muchas aplicaciones de uso diario no lo hacen, y la propia documentación de Microsoft señala que el shell (el Explorador) y el sistema de archivos tienen requisitos distintos y que es posible crear rutas con la API que la interfaz del shell no sabe interpretar. En la práctica, tras activarlo, programas modernos como PowerShell 7, algunos editores y herramientas de desarrollo funcionan con rutas largas, pero el Explorador de archivos y bastantes utilidades clásicas siguen quejándose.

Solución 4: el prefijo \\?\ para rutas extendidas

Windows permite indicar una ruta «extendida» con el prefijo \\?\, que le dice a la API que pase la ruta casi sin modificar y admita hasta 32.767 caracteres. Se puede usar desde la línea de comandos y PowerShell con las aplicaciones que respeten esa sintaxis:

# En PowerShell, siempre con -LiteralPath
Get-ChildItem -LiteralPath '\\?\D:\Proyectos\muy\larga\ruta'
Copy-Item -LiteralPath '\\?\D:\Origen\archivo.txt' -Destination '\\?\E:\Destino\archivo.txt'
Remove-Item -LiteralPath '\\?\D:\Proyectos\muy\larga\ruta' -Recurse -Force

# Para recursos de red, el prefijo es \\?\UNC\servidor\recurso
Get-ChildItem -LiteralPath '\\?\UNC\servidor\datos\carpeta'

Con este prefijo no puedes usar barras normales (/), ni . y .., y la ruta debe ser absoluta (las relativas siguen limitadas a MAX_PATH). Windows PowerShell 5.1 tiene limitaciones propias con rutas largas; PowerShell 7 se comporta mejor, sobre todo si has activado LongPathsEnabled.

Solución 5: asigna una letra de unidad a una carpeta profunda

Un truco clásico para acortar la ruta de trabajo sin mover nada es asignar la carpeta profunda a una letra de unidad. Dentro de esa «unidad», la ruta empieza desde la raíz y se ahorra mucho espacio:

subst X: "D:\Proyectos\Cliente\2026\Documentacion\Entregables\Version final"
# Trabaja en X:\ y, al terminar:
subst X: /D

El comando subst es temporal (desaparece al reiniciar), y net use con una ruta de red compartida hace lo mismo para recursos remotos.

Cómo encontrar las rutas demasiado largas

Si necesitas saber qué archivos de una carpeta superan el límite, hay dos formas. La primera usa Robocopy en modo «solo listar» (/L), que no copia nada, y filtra por longitud:

robocopy "D:\Datos" "C:\no-existe" /L /E /FP /NS /NC /NDL /NJH /NJS /NP |
    ForEach-Object { $_.Trim() } | Where-Object { $_.Length -gt 240 } |
    ForEach-Object { [pscustomobject]@{ Longitud = $_.Length; Ruta = $_ } } | Sort-Object Longitud -Descending

La segunda es con PowerShell directamente (mejor con PowerShell 7, porque Windows PowerShell 5.1 falla con rutas largas):

Get-ChildItem -Path 'D:\Datos' -Recurse -File -Force -ErrorAction SilentlyContinue |
    Where-Object { $_.FullName.Length -gt 240 } |
    Select-Object @{N='Longitud';E={$_.FullName.Length}}, FullName | Sort-Object Longitud -Descending

Fijo el umbral en 240 en lugar de 260 para dejar margen: si la copia añade un prefijo o una carpeta de destino, esas rutas serán las que den problemas. Si el análisis forma parte de una auditoría periódica de tu servidor de archivos, puedes programarlo con las tareas programadas de PowerShell.

Cómo borrar una carpeta con rutas demasiado largas

A veces el problema no es copiar, sino que no puedes eliminar una carpeta con rutas muy largas desde el Explorador. Con Robocopy puedes «vaciarla» reflejando sobre ella una carpeta vacía:

mkdir C:\vacia
robocopy C:\vacia "D:\Carpeta\Problematica" /MIR
rmdir C:\vacia
rmdir "D:\Carpeta\Problematica"

La opción /MIR hace que el destino quede idéntico al origen, es decir, vacío. Es muy potente: comprueba dos veces la ruta del destino antes de pulsar Intro, porque borra sin papelera.

Otros contextos donde aparece el error

  • Extracción de archivos comprimidos: el archivo contiene rutas internas largas que, sumadas a la carpeta de destino, superan el límite. Extrae en una carpeta cercana a la raíz o usa un descompresor que admita rutas largas, como 7-Zip.
  • OneDrive y SharePoint: tienen sus propios límites de longitud de ruta (en torno a 400 caracteres en el servicio), y el cliente de sincronización impone además el de Windows en tu equipo. Acorta nombres o reorganiza las carpetas.
  • Servidores de archivos y recursos compartidos: la ruta incluye el nombre del servidor y del recurso en el destino, y las aplicaciones que acceden por red están sujetas al mismo límite.
  • Desarrollo de software: los gestores de paquetes (por ejemplo, node_modules) crean anidaciones profundas. Activa las rutas largas y usa un sistema de archivos con rutas cortas en la raíz de los proyectos.

Cómo evitar el problema en el futuro

  • Define una convención para nombres de carpetas y archivos: cortos, sin repetir información, sin fechas ni descripciones innecesarias.
  • Limita la profundidad de la estructura de carpetas (por ejemplo, un máximo de cinco niveles).
  • Si administras servidores de archivos, informa a los usuarios del límite y audita periódicamente las rutas largas.
  • Activa las rutas largas en los equipos en los que trabajes con herramientas que lo soporten, pero no confíes en que resuelvan el problema para todas las aplicaciones.

Para otras tareas de mantenimiento relacionadas con los archivos del disco, puedes consultar los 10 comandos de PowerShell imprescindibles, donde explicamos cómo encontrar archivos gigantes, y la guía para liberar espacio en disco en Windows 11. Si automatizas copias con scripts, repasa los bucles en PowerShell.

Preguntas frecuentes

¿Cuál es la longitud máxima real de una ruta en Windows?

Con la API clásica, 260 caracteres. Con rutas extendidas (\\?\) o con las rutas largas habilitadas y una aplicación compatible, hasta unos 32.767. Cada componente (nombre de carpeta o archivo) puede tener hasta 255 caracteres.

He activado LongPathsEnabled y el Explorador sigue dando el error

Es normal: el Explorador no admite del todo rutas largas aunque el sistema las permita. Usa Robocopy, PowerShell 7 o una herramienta compatible para operar con esas carpetas.

¿Se pierden datos al acortar el nombre de una carpeta?

No. Cambiar el nombre no modifica el contenido, pero revisa los accesos directos, los enlaces y los programas que usen la ruta antigua, que dejarán de funcionar.

Conclusión

El error de «ruta de destino demasiado larga» se debe al límite histórico de 260 caracteres de Windows, que sigue vigente en el Explorador y en muchas aplicaciones. Para resolverlo, lo más sencillo es acortar la ruta; lo más fiable, copiar o mover con Robocopy; y lo más completo, habilitar LongPathsEnabled sabiendo que solo ayuda a las aplicaciones preparadas. Si necesitas borrar o inspeccionar estructuras con rutas enormes, el prefijo \\?\ y el truco de robocopy /MIR te sacarán del apuro.

Guías relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *