Abordando el error de Windows: Ruta de destino demasiado larga

¿Has estado intentando desesperadamente mover o eliminar un archivo, solo para encontrarte con un frustrante mensaje de error que dice “Ruta de destino demasiado larga”? Este error famoso es más común de lo que piensas, convirtiendo las tareas más simples de gestión de archivos en un laberinto digital.

¡Pero no temas! En este tutorial, aprenderás estrategias probadas en batalla para conquistar el dilema de “Ruta de destino demasiado larga”.

Ahora, si estás cansado de sentir que tu computadora se hace la difícil, ¡quédate para deshacerte de este molesto mensaje de error de Windows!

Prerrequisitos

Antes de conquistar el error de “Ruta de destino demasiado larga”, asegúrate de estar bien equipado para el viaje con lo siguiente:

  • A Windows computer – This tutorial uses Windows 10 for demonstrations.
  • PowerShell 5.1 o posterior: este tutorial utiliza PowerShell 7.4.0.
  • Permisos administrativos.
  • 7-zip instalado: este tutorial utiliza 7-zip 23.01, la última versión en el momento de escribir esto.

Desmitificando el Error de “Ruta de Destino Demasiado Larga”

Este mensaje críptico, “Ruta de Destino Demasiado Larga”, como el que se muestra a continuación, a menudo surge del límite de MAX_PATH, una restricción histórica profundamente arraigada en los sistemas de archivos de Windows. El límite MAX_PATH, establecido en 260 caracteres, ha sido un desafío de larga data para los usuarios que lidian con directorios profundamente anidados, estructuras de carpetas intrincadas y nombres de archivo extensos.

Demonstrating the “Destination Path Too Long” error

A lo largo de este tutorial, desentrañarás las complejidades del límite MAX_PATH y descubrirás estrategias prácticas para superar esta limitación.

Reduciendo la Longitud de la Ruta del Archivo Cambiando el Nombre de la Carpeta Principal

Imagina que tu computadora decide de repente canalizar su interior Shakespeare y declara: “Mover o no mover, esa es la cuestión”. Pero en serio, si has estado rascándote la cabeza por este problema de Windows, una de las soluciones básicas es cambiar el nombre de la carpeta principal.

Supongamos que tienes una carpeta (que contiene archivos importantes) con un nombre largo que deseas mover o copiar a otra ubicación. Cambiar el nombre de la carpeta principal ayudará a evitar el error “Ruta de Destino Demasiado Larga”.

Para ver cómo funciona la reducción de la longitud de la ruta del archivo, sigue estos pasos:

1. Localiza la carpeta con la ruta larga, como se muestra a continuación, donde el nombre de la carpeta es un montón de letras y números aleatorios.

Uno de los principales culpables detrás de este enigmático mensaje es el límite de MAX_PATH (260 caracteres) impuesto por el sistema operativo Windows. Este límite se mantiene para garantizar la compatibilidad entre diversas aplicaciones y sistemas.

Locating the folder with a long name

2. Cambie el nombre de la carpeta por uno más corto (por ejemplo, Backup-01).

Renaming the folder

3. Ahora, copie o mueva la carpeta renombrada a su ubicación preferida y vea si aún recibe el error “Ruta de destino demasiado larga”.

Copying or moving the renamed folder to a different location

Realización de operaciones de archivo en rutas de archivo extensas mediante 7-zip

Si cambiar el nombre de la carpeta o archivo no es una consideración crítica, un remedio rápido sería renombrarlos, evitando así el error “Ruta de destino demasiado larga”.

Pero si preservar los nombres existentes es primordial, ¿hay un enfoque viable sin desencadenar el error? Sí, utilizando 7-zip, una sólida herramienta de compresión y archivado de archivos.

Para realizar operaciones de archivo en rutas de archivo extensas mediante 7-zip, siga los pasos a continuación:

1. Inicie el administrador de archivos de 7-zip desde su menú de inicio o acceso directo en el escritorio.

2. A continuación, localice y haga clic con el botón derecho en su archivo o carpeta objetivo y elija una operación de archivo en el menú contextual. Pero en este ejemplo, copie el archivo (Copiar a) a otra ubicación.

Observe que el archivo de texto tiene una ruta de archivo ridículamente larga.

Locating the target file or folder in 7-zip

3. Explore la ubicación de destino del archivo en el cuadro de diálogo y haga clic en Aceptar para confirmar la copia del archivo.

7-Zip ignora las restricciones de Win32API sobre las longitudes máximas de ruta, lo que te permite realizar operaciones de archivo en archivos y directorios.

Setting the file’s destination

Por último, navega hasta tu ubicación objetivo y verifica que el archivo que copiaste exista.

Este resultado confirma que has copiado el archivo correctamente, evitando el límite de MAX_PATH mediante 7-Zip.

Verifying the file copied via 7-zip exists in the target location

Habilitar el Soporte para Rutas Largas de Win32 en Windows

Tal vez prefieras quedarte con soluciones basadas en Windows en lugar de depender de herramientas de terceros como 7-Zip al tratar con rutas de archivos largas. Si es así, habilitar el soporte para rutas largas de Win32 en Windows ofrece un enfoque nativo e integrado para superar el famoso error de “Ruta de Destino Demasiado Larga”.

Al desbloquear el soporte para rutas largas de Win32, potencias tu sistema Windows para manejar las rutas de archivo extensas sin necesidad de aplicaciones externas. Esta característica ofrece una solución personalizada que se ajusta a tu preferencia por las funcionalidades nativas de Windows.

Sigue leyendo y explora diferentes métodos para habilitar el soporte para rutas largas de Win32.

Usando el Editor del Registro

Una vía clave para habilitar el soporte para rutas largas de Win32 radica en utilizar el poder del Editor del Registro. Este centro de control digital actúa como el corazón palpitante de tu sistema Windows, permitiéndote ajustar configuraciones con precisión.

Para habilitar el soporte para rutas largas de Win32 mediante el Editor del Registro, procede de la siguiente manera:

1. Abre el cuadro de diálogo Ejecutar (Win + R), escribe regedit y presiona Enter (o haz clic en Aceptar) para abrir el Editor del Registro.

Launching the Registry Editor via the Run dialog

? IMPORTANTE: Antes de realizar cambios en el Editor del Registro, realiza una copia de seguridad del registro. Esta copia de seguridad es una protección que te permite restaurar el registro en caso de complicaciones o problemas imprevistos.

2. Navega hasta la siguiente clave o pega la clave en la barra de direcciones para acceder a diversas configuraciones relacionadas con el comportamiento del sistema de archivos.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Accessing settings and configurations related to the file system behavior

3. Busca y haz doble clic en la entrada LongPathsEnabled (panel de la derecha) para acceder a sus datos asociados y cambiar el Valor de datos de 0 a 1.

Esta entrada indica al sistema que habilite el soporte para rutas largas de Win32.

Enabling the Win32 long path support via the LongPathEnabled entry in Registry Editor

4. Cierra el Editor del Registro y reinicia tu sistema Windows para aplicar los cambios.

5. Ahora, realiza operaciones de archivos como copiar o mover archivos o carpetas con rutas de archivo largas para ver si puedes evitar el error “Ruta de destino demasiado larga”.

? Lamentablemente, en el momento de escribir esto, el Explorador de archivos nativo en Windows 10 y Windows Server 2022 aún enfrenta limitaciones para admitir rutas largas NTFS. Si trabajas a menudo con rutas de archivo largas, hay administradores de archivos gratuitos de terceros a los que puedes recurrir, como OneCommander y TotalCommander.

Usando el Editor de directivas de grupo (GPE)

Adentrarse en las complejidades de habilitar el soporte para rutas largas Win32 revela una miríada de enfoques, y entre los más refinados está el aprovechamiento del GPE. Piensa en el GPE como tu conjunto de herramientas personalizado para ajustar las funcionalidades de Windows.

Al potenciar tu sistema con capacidades de ruta extendida, el GPE toma el centro del escenario, ofreciendo un método centralizado y sistemático.

Para habilitar el soporte para rutas largas Win32 a través del GPE, realiza lo siguiente:

1. Abre el GPE (gpedit.msc) a través del cuadro de diálogo Ejecutar, como se muestra a continuación.

El GPE es un complemento de consola de Microsoft Management Console (MMC) que proporciona una GUI para administrar configuraciones de directivas en Windows.

Opening the GPE via the Run dialog

2. A continuación, inicia la habilitación del soporte para rutas largas Win32 en la ventana principal del GPE de la siguiente manera:

  • Navega hasta Configuración del equipoPlantillas administrativasSistemaSistema de archivos en el árbol de la consola (panel izquierdo). Al hacerlo, podrás acceder a las configuraciones de directivas relacionadas con el sistema de archivos.
  • Busca y haz doble clic en la configuración de directiva Habilitar rutas largas Win32 (panel derecho). Aparecerá un cuadro de diálogo de configuración para la configuración de directivas seleccionada (paso tres).
Accessing the configuration dialog for the “Enable Win32 long paths” policy setting

3. Posteriormente, elige la opción Habilitado en el cuadro de diálogo de configuración y haz clic en Aceptar para habilitar el soporte para rutas largas Win32 en Windows.

Enabling the Win32 long paths support for Windows via GPE

4. Ahora, copia o mueve archivos o carpetas con rutas de archivo largas para probar el soporte para rutas largas Win32.

Creación de vínculos simbólicos para rutas largas

Además de habilitar el soporte para rutas largas de Win32, otra opción para evitar las restricciones de rutas de archivo extensas es crear accesos directos digitales, es decir, enlaces simbólicos.

Crear un enlace simbólico es como colocar una puerta oculta en tu archivador. Ábrela y encontrarás un carril expreso hacia tus archivos sin comprometer la estructura existente.

Para crear enlaces simbólicos para rutas largas, sigue los pasos a continuación:

1. Inicia el Símbolo del sistema como administrador y ejecuta el siguiente comando mklink para crear un enlace simbólico de directorio (/D) en la ruta de destino especificada (es decir, C:\carpeta-enlace).

El enlace simbólico apunta a tu carpeta con una ruta excesivamente larga. Por lo tanto, reemplaza <symlink> con la ruta de destino y <long-path> con tu ruta larga.

mklink /D <symlink> <long-path>
Creating a symbolic link for a folder

2. A continuación, ejecuta el siguiente comando dir para verificar si existe tu enlace simbólico de directorio.

dir <symlink>
Checking if the directory symbolic link exists

3. Dentro de la carpeta de tu ruta larga, crea un archivo de texto llamado symlink.txt, que sirve como prueba de que tu enlace simbólico funciona.

? Este tutorial utiliza un administrador de archivos de terceros llamado Directory Opus, similar a XYplorer. Ambos son administradores de archivos ricos en funciones diseñados para mejorar la experiencia de gestión de archivos en Windows.

Creating a text file to serve as proof that the symbolic link works

4. Por último, localiza y navega dentro del enlace simbólico de tu directorio recién creado en tu gestor de archivos para confirmar que apunta a tu carpeta de ruta larga.

Ahora, puedes copiar o mover archivos a tu carpeta de destino, sin tener en cuenta el límite de MAX_PATH.

Verifying the directory symbolic link points to the long path folder

Empleando el Comando Robocopy para Operaciones de Archivos

Tal vez crear un enlace simbólico no sea parte de tu plan, pero estás buscando una operación de archivo directa, como copiar archivos desde y hacia carpetas con rutas de archivo largas. Si es así, necesitarás Robocopy, una solución poderosa para convertir tus problemas de transferencia de archivos en una experiencia sin problemas.

Para realizar operaciones de archivos a través del comando Robocopy, procede con estos pasos:

1. Abre PowerShell como administrador y ejecuta los siguientes comandos para declarar variables que contengan las rutas de origen y destino de tu archivo objetivo.

Estos comandos no tienen salida, pero asegúrate de reemplazar los marcadores <source> y <destination> adecuadamente.

$srcPath=<source>
$destPath=<destination>
Declaring variables to hold the target file’s source and destination paths

2. A continuación, ejecuta el comando robocopy que se muestra a continuación para copiar el archivo symlink.txt y toda su información (/COPYALL) desde la fuente ($srcPath) al destino ($destPath).

Este comando asegura que el archivo de destino se copie sin esperar (/W:0) o reintentar (/R:0) en caso de errores durante la operación de copia.

robocopy $srcPath $destPath symlink.txt /COPYALL /W:0 /R:0

? Quizás desees mover el archivo a una ubicación diferente. Si es así, reemplaza /COPYALL con la opción /MOVE, como se muestra a continuación. Esta opción indica a robocopy que realice una operación de “cortar y pegar”.

robocopy $srcPath $destPath symlink.txt /MOVE /W:0 /R:0

La salida a continuación confirma que has copiado con éxito un archivo independientemente de la longitud de la ruta.

Copying a file via the robocopy command bypassing the MAX_PATH limit

3. Ahora, ejecuta el cmdlet Get-ChildItem a continuación para verificar que el archivo copiado exista en la ubicación especificada.

Get-ChildItem $destPath
Verifying the copied file exists in the specified location

Aprovechando el parámetro -LiteralPath en los cmdlets de PowerShell

Ya has aprovechado el poder de Robocopy para navegar por las intrincadas rutas de la gestión de archivos. Sin embargo, queda una pregunta persistente: ¿Cómo puedes mejorar aún más tu control y precisión en el manejo de operaciones de archivo?

PowerShell ofrece cmdlets con parámetros, como -LiteralPath, que te permiten conquistar las complejidades de la gestión de archivos.

Para realizar operaciones de archivo utilizando el parámetro -LiteralPath, ejecuta lo siguiente:

1. Abre PowerShell como administrador y ejecuta los siguientes comandos para declarar variables que contengan la ruta del archivo fuente y las rutas de destino.

Asegúrate de reemplazar <source\symlink.txt> con la ruta completa de tu archivo y <destination> con la ruta de destino que prefieras.

$srcPath=<source\symlink.txt>
$destPath=<destination>

2. Luego, ejecuta el comando Copy-Item a continuación para copiar el archivo symlink.txt en la destino especificado ($destPath). El parámetro -LiteralPath te permite especificar la ruta del archivo de manera literal, sin interpretar ningún carácter comodín.

Este comando, cuando se ejecuta correctamente, no muestra nada en la consola, pero verificarás el resultado en el siguiente paso.

Copy-Item -LiteralPath $srcPath -Destination $destPath

? Cuando sea necesario, el -LiteralPath también funciona con otros cmdlets para operaciones de archivo, como Move-Item, Rename-Item y Remove-Item.

3. Por último, ejecuta el siguiente comando Get-ChildItem para listar archivos y carpetas dentro de la ruta de destino ($destPath).

Get-ChildItem $destPath
Verifying the file has been copied successfully to the destination path

? Mientras que el -LiteralPath funciona tan excelentemente como lo hace, este parámetro se utiliza principalmente para especificar la ruta de origen o el nombre del archivo. Pero en escenarios de script, el -LiteralPath asegura que tu script opere en las rutas exactas especificadas, reduciendo el riesgo de errores debido a interpretaciones de caracteres inesperadas.

Extracción de archivos de archivo mediante el comando Expand-Archive

Supongamos que has descargado un archivo de archivo (ZIP) con un nombre absurdamente largo que deseas extraer sin cambiar el nombre. En tales casos, el comando Expand-Archive de PowerShell puede ser una solución práctica.

El comando Expand-Archive te permite descomprimir o extraer archivos de un archivo mientras proporciona la flexibilidad para manejar rutas largas.

Para extraer archivos de archivo aprovechando el comando Expand-Archive, realice lo siguiente:

1. Ejecute los siguientes comandos en PowerShell (como administrador) para declarar variables que contengan la ruta completa de su archivo de archivo y la ruta de destino.

$srcPath=<source\file.zip>
$destPath=<destination>

2. Con las variables declaradas, ejecute el siguiente comando Expand-Archive, que no proporciona salida pero extrae el archivo de archivo a su destino especificado.

Expand-Archive -Path $srcPath -DestinationPath $destPath

3. Por último, ejecute el comando Get-ChildItem a continuación para ver la lista de archivos y carpetas dentro de la ruta de destino ($destPath).

Get-ChildItem $destPath

Observe dos elementos en la salida: el archivo de archivo (texto en rojo) y la carpeta extraída (resaltada en azul). Esta salida confirma que ha extraído correctamente su archivo de archivo sin desencadenar el error “Ruta de destino demasiado larga”.

Verifying the contents of the destination path

Conclusión

Durante este viaje, ha cubierto un arsenal de estrategias para conquistar el notorio error “Ruta de destino demasiado larga” en Windows. Ha explorado diversas técnicas, desde cambiar el nombre de las carpetas principales hasta el poder de 7-zip y habilitar el soporte de rutas largas de Win32.

Los enlaces simbólicos ofrecieron una solución ingeniosa, y el poderoso Robocopy demostró su destreza en operaciones eficientes con archivos. Tu inmersión en PowerShell destacó la utilidad del parámetro -LiteralPath y del comando Expand-Archive. Todos estos se mostraron invaluables para extraer archivos sin sucumbir a las restricciones de longitud de la ruta.

Ahora, ¿por qué no considerar la combinación de estas estrategias para crear soluciones sólidas adaptadas a tus desafíos específicos? Experimenta con la creación de scripts en PowerShell, integrando enlaces simbólicos cuando sea necesario, y perfeccionando tus operaciones de archivos con Robocopy.

Recuerda, la clave no solo está en resolver el problema inmediato, sino también en comprender cómo estos métodos pueden trabajar armónicamente para abordar una variedad de desafíos relacionados con archivos.

Source:
https://adamtheautomator.com/destination-path-too-long/