Cómo solucionar (de varias formas) el problema que genera Windows cuando trabajamos con carpetas y nombres de ficheros muy largos (que entre ambos superan los 260 caracteres). Solución al error: los nombres de archivo origen son más largos de lo permitido.
- Carpetas y ficheros con nombres muy largos en Windows, motivo, síntoma, peligro, errores.
- Solución 1: la mejor solución para evitar este problema de nombres largos en Windows.
- Solución 2: para unidades de red (UNC): subst.
- Solución 3: para unidades de red (UNC) creando unidad de red desde modo gráfico.
- Solución 4: usando enlaces simbólicos (tanto en modo comando como en modo gráfico).
- Solución 5: habilitar soporte para rutas largas en Windows.
Carpetas y ficheros con nombres muy largos en Windows, motivo, síntoma, peligro, errores
Windows tiene una limitación en el tamaño (longitud) de las carpetas y los ficheros. Como máximo, sumando ambos, admite hasta 260 caracteres. Pero, por desgracia, Windows permite crear carpetas y ficheros de mayor longitud, por ejemplo cuando las creamos desde el Explorador de Windows o desde otros programas. Esto es una paradoja, es la pescadilla que se muerde la cola, porque no debería dejar crear carpetas y ficheros de mayor longitud si luego nos van a generar problemas.
Por ejemplo, Windows nos ha dejado crear unas carpetas y subcarpetas, que sumando, tienen una longitud de más de 260 caracteres, por ejemplo:
\\svofimatica\usuarios\datos usuarios y almacenes\facturacion y stock almacén\control de stock\estocaje en los almacenes centrales y otros\armarios en almacén 1\armario 1\secciones\sección b 345\caja SSD\SSD 2\funcionamiento básico disco y estocaje de ssd.docx
Windows nos dejará crear el fichero anterior, de extensión docx. Sumando toda la ruta, tiene 265 caracteres (supera los 260). Si intentamos trabajar con él, por ejemplo intentar moverlo de sitio o eliminarlo, Windows nos mostrará un mensaje como el siguiente:
Con el texto:
Los nombres de los archivos de origen son más largos de lo permitido por el sistema de archivos. Intente moverlos a una ubicación con un nombre de ruta de acceso menos largo o acortar el nombre de los archivos antes de intentar la operación.
Pero lo peligroso y la problemática viene derivada de que Windows sí permite crearlos, lo cual es un dilema para los administradores de sistemas: para las copias de seguridad, restauraciones y otras operaciones.
Si estamos trabajando con una unidad de red, un recurso compartido desde otro equipo, con formato UNC: \\nombre_equipo\nombre_recurso_compartido,
Por ejemplo, si tenemos el siguiente recurso compartido:
\\svofimatica\usuarios\datos\facturacion\control de stock\…
Vemos que la ruta ya empieza a ser larga, si además dentro de la última carpeta hay más subcarpetas y ficheros con nombres largos, acabarán teniendo, en su suma total, más de 260 caracteres. Esto genera un grave problema con Windows, cuando queramos hacer algún tratamiento con estos ficheros: moverlos, eliminarlos, incluso a veces abrirlos, nos mostrará un error indicando que el fichero no se puede procesar por tener la ruta muy larga.
Solución 1: la mejor solución para evitar este problema de nombres largos en Windows
La mejor solución pasar por no crearlos, por no generar esta situación, pasa por educar a los usuarios para que usen siempre nombres cortos y no muchas anidaciones de carpetas dentro de carpetas.
Pero entendemos que, en determinados casos, se hace casi imposible de conseguir.
Solución 2: para unidades de red (UNC): subst
Cuando queremos trabajar con ficheros y carpetas con nombres largos, para hacer determinadas tareas que nos devuelvan errores, del tipo:
La ruta xxxx es demasiado larga.
Podremos usar el comando subst, desde una ventana de Símbolo de sistema (cmd o MS-DOS), que nos permitirá crear una unidad de red virtual temporal (NO es permanente) y poder acortar las rutas.
Por ejemplo, si tenemos la ruta UNC:
\\svofimatica\Usuarios y personal externo\Datos ofimáticos\Facturación por sectores\Almacén\…
Si en la ruta anterior queremos trabajar con la arpeta «Almacén» y sus subcarpetas y ficheros, poremos acortar toda la ruta con subst, ejecutando el siguiente comando (desde una ventana de Símbolo de sistema, cmd o MS-DOS):
1 |
subst X: \\svofimatica\Usuarios y personal externo\Datos ofimáticos\Facturación por sectores\Almacén |
El comando anterior creará una unidad virtual llamada X: (podremos usar cualquier letra de unidad que no esté en uso por el sistema) que apunta a toda la ruta larga. Accederemos a esta unidad con:
1 |
X: |
Y ya tendremos acceso a las carpetas y ficheros que contenga, habiendo reducido considerablemente el nombre, ahora podremos, por ejemplo, eliminar todo el contenido con el comando:
1 |
rmdir /S /Q *.* |
Una vez que hayamos finalizado los procesos que queramos ejecutar, podremos eliminar el vínculo X:, ejecutando el comando:
1 |
subst X: /D |
Este vínculo o unidad de red virtual, no se puede usar desde otra sesión, ni desde otros usuarios y tampoco queda persistente cuando se reinicia el equipo. Únicamente sirve para la ventana de MS-DOS abierta que lo ejecuta.
Solución 3: para unidades de red (UNC) creando unidad de red desde modo gráfico
Otra solución es crear una unidad de red persistente (permanece conectada aunque se reinicie el equipo) apuntando a un recurso compartido, como en el caso anterior, pero esta vez desde el modo gráfico y dejando la unidad conectada de forma permanente.
Para crear una unidad de red en Windows, desde el Explorador de Windows, pulsaremos en «Este equipo» [2], en la cinta de opciones pulsaremos en los tres puntos [2] y en el menú pulsaremos en «Conectar a unidad de red» [3]:
El proceso anterior variará en función de la versión del sistema operativo Windows de que dispongamos, pero más o menos todos son muy parecidos. Por ejemplo, un Windows Server 2012, Windows Server 2016, Windows Server 2019 y Windows Server 2022, en el Explorador de Windows, incluye directamente la opción de «Conectar a unidad de red»:
Elegiremos la letra de unidad que se asignará, por ejemplo la Z:, y en «Carpeta» introduciremos toda la ruta UNC del recurso compartido al que vincularemos la unidad Z:, por ejemplo a:
\\svofimatica\Usuarios y personal externo\Datos ofimáticos\Facturación por sectores\Almacén
Si queremos hacer persistente esta unidad, para que esté disponible cada vez que se arranque el equipo, marcaremos «Conectar de nuevo al iniciar la sesión»:
De esta forma, conseguiremos reducir considerablemente la longitud de la carpeta, pasando de toda esta ruta, de 95 caracteres de longitud:
\\svofimatica\Usuarios y personal externo\Datos ofimáticos\Facturación por sectores\Almacén
A únicamente un carácter: Z:
Solución 4: usando enlaces simbólicos (tanto en modo comando como en modo gráfico)
Otra solución para acortar los nombres de las carpetas es usando enlaces simbólicos. Supongamos que tenemos la carpeta:
C:\Prueba\Facturación\Almacén\Sección\Caja
Esta carpeta «Caja» contiene, a su vez, más subcarpetas y archivos, y queremos trabajar con ella directamente. Para acortar la ruta, podemos usar un enlace simbólico, para ello, abriremos una ventana de MS-DOS (cmd o Símbolo de sistema), como administradores:
Para crear un enlace simbólico llamado «Datos» a la ruta anterior, ejecutaremos el siguiente comando:
1 |
mklink /d Datos "C:\Prueba\Facturación\Almacén\Sección\Caja" |
Si el vínculo se crea correctamente en C:\Datos, mostrará el mensaje:
Vínculo simbólico creado para Datos <<===>> C:\Prueba\Facturación\Almacén\Sección\Caja
A partir de ahora, tantos desde la línea de comandos como desde el modo gráfico, podremos usar el vínculo «Datos» como si se tratarse de la carpeta «Caja» de toda la ruta anterior. Desde la línea de comandos, podremos acceder con:
1 |
cd Datos |
En realidad, al acceder a C:\Datos, estamos accediendo a:
C:\Prueba\Facturación\Almacén\Sección\Caja
Y desde el modo gráfico, desde el Explorador de Windows, veremos también el vínculo «Datos», como si fuese una carpeta, solo se diferencia porque el icono lleva una flecha
Al acceder a «Datos», al igual que desde la línea de comandos, en realidad estamos accediendo al contenido de:
C:\Prueba\Facturación\Almacén\Sección\Caja
Con este método también podemos acortar considerablemente los nombres de las rutas.
Si queremos eliminar en vínculo simbólico, desde una ventana de MS-DOS (como administradores), ejecutaremos el siguiente comando:
1 |
rd Datos |
El comando anterior eliminará únicamente el vínculo simbólico, pero no eliminará su ruta real ni sus ficheros.
Solución 5: habilitar soporte para rutas largas en Windows
Podremos habilitar el soporte de Windows para rutas largas abriendo el Editor del registro (regedit), desde el menú de inicio, escribiendo «Ejecutar» y abriendo la herramienta «Ejecutar» (también se puede mostrar con la pulsación de teclas Windows + R):
Escribiremos «regedit» y pulsaremos «Aceptar»:
En el Editor del Registro, accederemos al árbol:
1 |
Equipo\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem |
Dentro de la clave «FileSystem», haremos doble clic sobre el valor «LongPathsEnabled»:
Introduciremos el valor «1» y pulsaremos «Aceptar»:
Para que se aplique el cambio tendremos que reiniciar el equipo.
Esta modificación también se puede realizar desde la directiva del equipo, abriendo el editor de directivas, desde Ejecutar, escribiendo «gpedit.msc»:
Accederemos a la rama «Configuración del equipo» – «Plantillas administrativas» – «Sistema»:
Y dentro de «Sistema», accederemos a «Sistema de archivos». En la parte derecha, haremos doble clic sobre la directiva «Habilitar rutas de acceso Win32 largas»:
Marcaremos «Habilitada» y pulsaremos «Aceptar»:
Y reiniciaremos el equipo.
La opción de modificar la directiva realiza el mismo proceso que si modificáramos la clave de registro, da igual hacerlo de una forma o de otra.