Error de ruta de destino demasiado larga al mover/copiar un archivo

Si te enfrentas al error Ruta de destino demasiado larga cuando intente copiar o mover un archivo a una carpeta en Windows, pruebe el truco rápido a continuación. La razón por la que recibe el error es que el Explorador de archivos no pudo copiar/eliminar/cambiar el nombre de ninguna ruta de más de 256 caracteres.

Esta no es la limitación del sistema de archivos NTFS, sino la biblioteca API Win32. En la API de Win32, el valor de MAX_PATH es 260. Cuando intenta acceder a la E/S del archivo en una ruta específica, la API de Windows siempre verifica si la ruta es más larga que el límite de MAX_PATH.

La mayoría de las aplicaciones estándar, incluido el Explorador de Windows (Explorador de archivos), no funcionan correctamente con archivos de rutas largas que superan los 256 caracteres. Bajo el nombre del archivo, Windows entiende la ruta completa, comenzando con la raíz de la unidad, terminando con la última subcarpeta y el nombre del archivo en sí.

Al usar las funciones de la API de Unicode, es posible usar una ruta de hasta 32767 caracteres. Gracias a esto, muchos programas de terceros (los populares administradores de archivos, por ejemplo FAR y Total Commander) procesan archivos/carpetas cuya longitud de ruta supera los 256 caracteres sin ningún problema.

Nota. Algunos programas utilizan el formato de ruta de archivo UNC (con el prefijo «?») para evitar las limitaciones de la API de Win32. Por ejemplo, la ruta absoluta del archivo podría verse así:

\?C:folder1subfolder1toolongfilename

Debido a las limitaciones de la longitud máxima de la ruta, el administrador puede encontrar los siguientes problemas:

  • Los usuarios pueden crear archivos y carpetas en una carpeta de red compartida a la que el administrador (o los scripts de administración) no pueden acceder localmente;
  • Errores al sincronizar perfiles itinerantes;
  • Errores en la recuperación de datos de instantáneas;
  • Cálculo incorrecto del tamaño de los directorios;
  • Pérdida de archivos durante la migración y transferencia de datos entre servidores, etc.

Solución de ruta de destino demasiado larga

Error completo:

Ruta de destino demasiado larga

Los nombres de los archivos serían demasiado largos para la carpeta de destino. Puede acortar el nombre del archivo e intentarlo de nuevo, o probar una ubicación que tenga una ruta más corta.

Error de ruta de destino demasiado larga en Windows 10 21H2

Solución 1. Cambiar el nombre de la carpeta principal para disminuir la ruta completa

La forma más sencilla es acortar el nombre de las carpetas principales, reduciendo la longitud total de la ruta simplemente renombrándola. Esta solución alternativa no siempre es aplicable.

Solución 2. Crear un enlace simbólico

Otra opción es crear un enlace simbólico a una parte de la ruta, acortando así la longitud total de la ruta. Para crear un enlace simbólico a una carpeta con una ruta larga, puede usar el siguiente comando:

mklink /d c:homelink “C:verylongpathhere……”

Ahora puede realizar todas las operaciones de archivos (mover, renombrar) con el directorio al que está asignado el enlace simbólico (c:homelink en nuestro caso). No habrá restricciones de longitud de ruta cuando realice operaciones de archivo en el directorio de enlace simbólico.

Solución 3. Usar la utilidad Subst

Otra opción es asociar la carpeta del problema a un disco virtual (en nuestro ejemplo, Z :), utilizando la utilidad integrada Sustancia. Por lo tanto, también puede acortar la longitud de la ruta:

Subst Z: “C:verylongpathhere……”

Ahora puede trabajar con los datos en la unidad Z:, en la que la ruta a los archivos no excederá el límite de ruta de la API de Win32. Una vez finalizado el trabajo, puede eliminar el disco virtual mediante Subst con la opción /d:

Subst Z: /d

Solución 4. Ruta compartida oculta

Paso 1

La solución más rápida para esto (especialmente si necesita simplemente migrar (mover) muchas carpetas de un lugar a otro) es asignar la carpeta con una ruta larga a una letra de unidad.

Debe buscar la carpeta del problema utilizando la ruta UNC. Puede ser la ruta a un recurso compartido SMB, la ruta a un recurso compartido administrativo disponible en cualquier computadora con Windows (por ejemplo, \servernamed$usersyour_long_path…), o el formato de nombre de archivo NT (\? d:usuarioslongpath). Copie la ruta de la carpeta al portapapeles.

Nota. El prefijo “\?” de la cadena de ruta le dice a Windows que deshabilite el análisis adicional de la cadena de ruta y envíe la ruta después del prefijo directamente al controlador del sistema de archivos. En este caso, puede eludir las restricciones de la API de Windows y superar el MAX_PATH límites.

Lo que debe hacer es buscar la ruta compartida oculta y copiarla en su portapapeles.

ruta de archivo demasiado larga

Paso 2

Luego abra el Explorador de archivos y seleccione Esta PC. Haga clic en el botón Conectar a unidad de red y seleccione Unidad de red. Dependiendo de su sistema operativo, puede aparecer en el menú de herramientas.

el nombre del archivo sería demasiado largo para la carpeta de destino

Paso 3

Luego, simplemente pegue la ruta de la carpeta larga, seleccione la letra de la unidad que desea asignar y presione Finalizar.

solución de ruta de destino demasiado larga

Etapa 4

Ahora podrá copiar los archivos/carpetas en esta ubicación sin recibir el error.

Solución 5. ¿Cómo habilitar Win32 Long Path en Windows?

En las compilaciones actuales de Windows 10 y 11 (desde la versión 1607 de Windows 10) y en Windows Server 2019/2022, fue posible deshabilitar el límite MAX_PATH para las aplicaciones win32 y Windows Store manifestadas en el nivel del sistema operativo Windows sin usar el prefijo \ ?. De forma predeterminada, esta función está deshabilitada.

Para habilitar el soporte integrado para rutas largas en Windows 10/Windows Server 2016/2019, use el Regedit.exe editor para establecer el LongPathsEnabled parámetro de REG_DWORD en la clave de registro HKLMSISTEMACurrentControlSetControlFileSystem con un valor 1.

ruta de destino de Windows demasiado larga

Puede cambiar este parámetro de registro con el siguiente comando de PowerShell:

Set-ItemProperty -Path HKLM:SYSTEMCurrentControlSetControlFileSystem -Name LongPathsEnabled -Value 1

O puede habilitar la compatibilidad con rutas largas a través del Editor de directivas de grupo local (Win + R > gpedit.msc > Aceptar). Vaya a la siguiente sección de GPO en el editor de directivas de grupo: Configuración del equipo > Plantillas administrativas > Sistema > Sistema de archivos. Abra el parámetro de política llamado Habilitar rutas largas de Win32 y configúrelo en Habilitado.

ruta de destino demasiado larga windows 10

Habilitar las rutas largas de Win32 permitirá que las aplicaciones win32 manifestadas y las aplicaciones de la Tienda Windows accedan a rutas más allá del límite normal de 260 caracteres por nodo en los sistemas de archivos que lo admitan. Habilitar esta configuración hará que las rutas largas sean accesibles dentro del proceso.

Guarde los cambios y actualice la configuración de la política de grupo local mediante el comando gpupdate.

En ambos casos, la computadora debe reiniciarse para que los cambios surtan efecto. Después de un reinicio, los usuarios y los programas podrán trabajar sin restricciones con archivos, cuya longitud de ruta exceda los 256 caracteres. Ahora los archivos solo se verán afectados por el límite de la ruta del archivo NTFS de 32767 caracteres.

Si desea verificar si la compatibilidad con rutas largas de NTFS está habilitada en esta computadora, puede ejecutar el siguiente comando de PowerShell:

(Get-ItemProperty "HKLM:SystemCurrentControlSetControlFileSystem").LongPathsEnabled

Si el comando devuelve un valor de 1entonces la política está habilitada.

la ruta de destino es demasiado larga

Tenga en cuenta que para usar la ruta larga win32 NTFS, la aplicación debe desarrollarse con este parámetro habilitado. Como de costumbre, esta opción se habilita a través del archivo de manifiesto de la aplicación.

Un manifiesto de aplicación es un archivo pequeño que contiene información sobre compatibilidad de aplicaciones, soporte de DPI, etc. Si las aplicaciones se desarrollan con soporte de ruta larga NTFS, entonces el largoPathAware El parámetro debe agregarse al archivo de manifiesto. Por ejemplo:

<application xmlns=”urn:schemas-microsoft-com:asm.v3″>

<windowsSettings xmlns:ws2=”http://schemas.microsoft.com/SMI/2016/WindowsSettings”>

<ws2:longPathAware>true</ws2:longPathAware>

</windowsSettings>

</application>

En Visual Studio 2019 y MSBuild 16, esta configuración está habilitada de forma predeterminada.

Una vez más, queremos llamar su atención sobre el hecho de que el parámetro LongPathsEnabled le permite omitir las restricciones de longitud de ruta solo para aplicaciones de Windows que no especifican la variable MAX_PATH en los códigos de programación. Esto significa que el Explorador de Windows no funcionará con una ruta de archivo larga incluso después de habilitar la configuración de registro «LongPathsEnabled» o la configuración de política «Habilitar Win32 Long Paths». Para administrar archivos con una ruta larga en el Explorador de archivos, debe usar uno de los trucos descritos anteriormente (enlace simbólico, sustitución o formato de ruta \?C:).

Win32 Long Paths GPO no funciona en Windows 10 File Explorer

Hay malas noticias. El Explorador de archivos, incluso en las versiones más recientes de Windows 10 20H2 y Windows Server 2019, aún no admite rutas largas de NTFS. Esto significa que cuando abra un archivo/carpeta de este tipo, seguirá recibiendo el error: «Ruta de destino demasiado larga».

El Explorador de Windows no tiene una declaración en el manifiesto y deberá usar uno de los trucos descritos en este artículo para acceder a rutas largas en Windows.

Vimos el siguiente comentario de un empleado de Microsoft:

Esta función no está lista para incluirse en el Explorador de archivos. Debe esperar hasta que Microsoft lo active en Explorer o usar una herramienta de administración de archivos de terceros que sea compatible con rutas largas.

Sin embargo, en algunas aplicaciones, la verificación MAX_PATH está incrustada en el código. Acerca de las restricciones máximas de ruta de archivo para desarrolladores de .Net, consulte la Solución 7 a continuación.

Solución 6. Uso de la herramienta de línea de comandos de Robocopy para copiar y mover archivos

Puede usar la herramienta integrada de Windows de la consola — robocopy para copiar o mover datos. La utilidad le permite copiar y sincronizar correctamente archivos/directorios con rutas largas.

Por ejemplo, si no puede eliminar el directorio debido al límite de longitud de la ruta, primero puede mover los datos del directorio mediante robocopy:

ROBOCOPY c:folder1folder2folder3longpath c:tmp /MOVE /E

Error de ruta demasiado larga

Después de eso, puede eliminar el directorio de origen:

Delete c:folder1folder2folder3longpath /q /f

Solución 7. Ruta de archivo larga para desarrolladores .Net

La biblioteca de clases base (BCL) del entorno de desarrollo para .Net Framework tiene una verificación preliminar integrada para la admisibilidad de directorios largos y nombres de archivos. Por lo tanto, los desarrolladores de .Net Framework pueden encontrar un error System.IO.PathTooLongException en sus programas.

Verifique la longitud de la ruta eliminada del código BCL en .Net Framework 4.6.2. Por lo tanto, después de actualizar la versión de .Net Framework, los desarrolladores pueden usar rutas largas en el formato de ruta UNC (\?C:Very_long_path). Cuando el parámetro LongPathsEnabled está habilitado en Windows 10/Windows Server 2016, es posible trabajar correctamente con archivos que tienen rutas de prácticamente cualquier longitud.

Para hacer esto, use Net Framework 4.6.2 (y más reciente) cuando cree aplicaciones, o use el siguiente archivo de configuración de la aplicación para versiones anteriores de la aplicación (.Net 4.0):

<?xml version=”1.0″ encoding=”utf-8″?>

<configuration>

<startup>

<supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.0″/>

</startup>

<runtime>

<AppContextSwitchOverrides value=”Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false” />

</runtime>

</configuration>

Solución 8. Ruta de archivo larga en PowerShell .Net Developers

PowerShell se basa en .Net, y para que Get-Item, Get-ChildItem, Remove-Item y otros cmdlets funcionen correctamente con rutas de archivo largas, debe actualizar .NET Framework a 4.5 o posterior e instalar Windows. Marco de Gestión 5.1.

Consejo. La versión actual de PowerShell se puede encontrar en la variable $PSVersionTable.

Después de eso, cuando use cmdlets de archivo en lugar de Path, debe usar el parámetro LiteralPath. Por ejemplo:

Get-ChildItem -literalpath \?C:PS

camino demasiado largo

Solución 9. Utilice 7-Zip para realizar operaciones de archivo con una ruta de archivo larga

Puede usar la popular herramienta para administrar 7ZIP para evitar la restricción MAX_PATH en Windows. Instale 7-Zip, ejecute la aplicación 7zFM.exe y pegue la ruta a la carpeta del problema en la barra de direcciones.

Ahora puede realizar cualquier operación de archivo en los archivos de este directorio desde la GUI de 7-zip. 7-Zip ignora las restricciones de Win32API sobre la longitud máxima de la ruta.

ruta de destino demasiado larga corrección de windows 10

Consejo #1

También hay una gran herramienta llamada «Herramienta de ruta larga» que funciona muy bien para solucionar este problema. Sin embargo, no es gratis, los métodos anteriores sí lo son.

Consejo #2

Gracias, Colin Albright, por el comentario a continuación. Sí, también puede usar 7-zip o cualquier utilidad zip para solucionar el problema de la ruta de destino demasiado larga. A veces, en archivos individuales, esta podría ser una solución mejor y más rápida. Simplemente comprima la carpeta y estará listo para comenzar.

Valora este artculo post

Deja una respuesta

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