En corto
PowerShell como administrador:
| |
Reinicia (o al menos los programas afectados). Por directiva de grupo, lo mismo en Configuración del equipo → Plantillas administrativas → Sistema → Sistema de archivos → Habilitar rutas de acceso largas de Win32.
Con eso, los programas que se declaran compatibles dejan de fallar con rutas de más de 260 caracteres. Los que no, siguen igual: para esos, el prefijo \\?\, subst o robocopy.
El problema
| |
MAX_PATH son 260 caracteres contando la letra de unidad y el NUL final. Se pasa fácil con node_modules, clones de git con nombres largos, respaldos que anidan carpetas, o una sincronización que trae una estructura profunda de otro sistema.
Qué hace la clave
Desde Windows 10 1607 (y Server 2016), muchas funciones de archivo de Win32 (CreateFileW, CopyFileW, MoveFileW, FindFirstFileW, CreateDirectoryW…) aceptan rutas hasta unos 32 767 caracteres si se cumplen dos condiciones:
LongPathsEnabled = 1en el registro (o la directiva).- El programa declara
longPathAwareen su manifiesto.
Windows lee el valor una vez por proceso, en la primera llamada a esas funciones. De ahí el reinicio: los procesos que ya estaban corriendo (Explorador, servicios) siguen con el valor viejo.
| Programa | ¿Respeta rutas largas con la clave activa? |
|---|---|
| PowerShell 7 | Sí |
| Windows PowerShell 5.1 | A medias; depende del cmdlet |
| .NET (Core) y apps modernas | Sí |
| Git para Windows | Sí, con git config --system core.longpaths true |
robocopy, 7-Zip | Sí (usan \\?\ por su cuenta, con o sin clave) |
cmd.exe (dir, copy, del) | No |
| Explorador de archivos | Parcial; sigue tropezando al copiar o borrar |
| Aplicaciones antiguas | No, y no hay forma de obligarlas |
Comprobar el valor:
| |
Prueba rápida en PowerShell 7:
| |
Plan B cuando el programa no coopera
Prefijo
\\?\: le dice a Windows que pase la ruta tal cual, sin el límite. Funciona en cualquier versión y sin tocar el registro, pero solo con rutas absolutas y sin./... Para UNC:\\?\UNC\servidor\recurso\....1 2dir \\?\C:\proyectos\muy\profundo rd /s /q \\?\C:\proyectos\muy\profundo\node_modulesAcortar la ruta:
subst X: C:\proyectos\muy\profundocrea una unidad que empieza de cero;net usehace lo mismo con rutas UNC.Borrar lo que nadie puede borrar:
robocopy C:\vacia C:\ruta\imposible /MIRcon una carpeta vacía deja la carpeta destino vacía y ya se puede quitar.Git:
core.longpaths truey, en Windows, clona cerca de la raíz (C:\src\repo) en vez de dentro deDocumentos.
Trampas
- La clave no es un interruptor global. Es una autorización que cada programa tiene que reclamar; activarla no rompe nada, pero tampoco arregla programas que no la piden.
- Reinicio. Sin él, el Explorador y los servicios siguen con el valor cacheado.
- Nombres de componente: cada carpeta o archivo sigue limitado a 255 caracteres; lo que crece es el total.
- Rutas relativas siempre quedan limitadas a 260, con o sin clave.
- Compatibilidad hacia atrás: un archivo creado en una ruta larga puede no abrirse desde un programa viejo en la misma máquina. Si compartes carpetas con software legacy, mantén las rutas cortas.
Extra: archivos de prueba del tamaño exacto
Para probar transferencias, cuotas o espacio sin buscar un archivo grande:
| |
Crea al instante un archivo del tamaño indicado en bytes, sin escribir datos (se lee como ceros). Como ventaja, es instantáneo aunque pidas 50 GB; como desventaja, comprime a nada, así que no sirve para medir rendimiento de compresión o deduplicación.
Referencia: Maximum Path Length Limitation en Microsoft Learn.