Pregunta Superar las restricciones de longitud de ruta de archivo máxima en Windows


Uno de nuestros clientes utiliza habitualmente nombres de ruta muy largos (varias carpetas anidadas, con nombres largos) y habitualmente encontramos "problemas de educación del usuario" para acortar la ruta a menos de 260 caracteres.

¿Hay alguna solución técnica disponible? ¿Podemos activar algún tipo de interruptor en Windows 7 y Windows 2008 R2 para decir "sí, simplemente ignore estos problemas históricos y haga que el nombre de la ruta de acceso de +260 caracteres funcione".

PD He leído y no he sido editado por Nombrar archivos, rutas y espacios de nombres


25
2018-02-08 22:29


origen


Aquí estamos en 2018 y el problema sigue existiendo en ROBOCOPY. Limite 255 Aquellos que lo superan simplemente emiten un pitido pero no copian. - SDsolar


Respuestas:


Los métodos están ahí, pero hasta que Microsoft vuelva a codificar el widget del explorador de archivos, nos quedamos con ese viejo problema. Es subóptimo, pero así es como funciona.


12
2018-02-08 22:41



Fallo en el software de MS que no se ha corregido para algunas versiones de SO, es una nueva ... - Hubert Kario
Windows 10 1607 finalmente solucionó el problema del explorador de archivos y tiene algo de magia para engañar a las aplicaciones Win32 para que trabajen en este extraño nuevo mundo de enormes caminos: howtogeek.com/266621/… - HackSlash


Solo menciono un truco que no veo mencionado aquí todavía.

Toma este archivo por ejemplo:

C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

Esta ruta de archivo completa tiene 290 caracteres de longitud. El shell (Explorador de Windows) y la mayoría de las utilidades de línea de comandos probablemente no te permitirán tocarlo.

Utilizar el subst comando así

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

Ahora puede acceder (y eliminar, mover, etc.) al archivo de esta manera:

X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

Y ahora ese nombre de archivo tiene solo ~ 235 caracteres más o menos, por lo que ya no encontrará los problemas de "El nombre de archivo es demasiado largo".

En la API de Windows, hay una constante infame conocida como MAX_PATH. MAX_PATH es de 260 caracteres. El sistema de archivos NTFS en realidad admite rutas de archivos de hasta 32.767 caracteres. Y aún puede usar nombres de ruta largos de 32.767 caracteres accediendo a las versiones Unicode (o "amplia") de las funciones de la API de Windows, y también prefijando la ruta con \\?\.

MAX_PATH se puso en piedra un muy largo Hace tiempo en el mundo de Windows. Creo que tiene algo que ver con los estándares ANSI en ese momento ... pero es una de esas cosas que a Microsoft le resulta muy difícil cambiar ahora, ya que ahora tenemos miles de programas y aplicaciones, incluidos algunos escritos por el propio Microsoft, que usan MAX_PATH y fallaría de formas extrañas si la constante cambiara repentinamente. (Desbordamientos de búfer, corrupción del montón, etc.)


24
2017-12-25 17:31



He estado tomando un enfoque similar a subst mediante el uso de uniones de directorios, que pueden ser más convenientes para la limpieza si solo está buscando hacer algunos cambios rápidos. yo suelo Link Shell Extension, pero puedes usar el mklink comando así mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow". - Charles Grunwald


Puede evitar esta limitación utilizando la notación \\? \ C:. Es feo, pero admite longitudes de archivo de hasta 2 ^ 15.

http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath


10
2018-02-09 00:00



Sí, lo leí, como dije (ver mi enlace). Pero, ¿cómo me beneficio exactamente de eso? ¿Puedo asignar una unidad a \\? \ Algo, por ejemplo. No entiendo. El artículo está destinado a los programadores que utilizan las API de Windows. Si bien codifico en .NET a medida que surja la necesidad, no uso C ++, etc., y no puedo ver por qué esto es relevante para el personal de mis clientes que está usando el explorador de Windows y el diálogo de archivos común, etc. - Christopher Edwards
En última instancia, no hay ninguno. :-/ Tristemente. - Chris K
@ChristopherEdwards Puede crear uniones a puntos inferiores en la jerarquía de carpetas. - Hubert Kario
@HubertKario Sí, pero ¿cómo me ayudaría eso? - Christopher Edwards
@ChristopherEdwards usted podría hacer un enlace c:\usr-data a `c: \ Users \ VeryLongUserName \ LongFolderName` y dígale que use el primero, pero si regularmente nombra carpetas con caracteres de 40 o más, esto no ayudará ... - Hubert Kario


Microsoft ahora tiene una solución disponible para este comienzo con Windows 10, que se explica en la Nombrar archivos, rutas y espacios de nombres Artículo de MSDN.

Darthcoder ya respondió con detalles sobre el \\?\C: alrededor de la notación, pero ahora hay una clave de registro en HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD) que se puede usar para eliminar las limitaciones de MAX_PATH para un solo sistema. El artículo también menciona el apoyo para el control de la política de grupo en Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths para la organización o la implementación en todo el grupo si es necesario.


8
2018-04-16 03:31



No he tenido tiempo para realizar pruebas exhaustivas, pero hasta ahora he visto resultados mixtos con esta solución, y no puedo confirmar que esto resuelva el problema para Windows [archivo] Explorer. - JimNim
Esto no funciona en el Explorador de archivos porque aunque el sistema y NTFS pueden manejar rutas largas, el Explorador no puede hacerlo hasta que se vuelva a codificar. - ingyhere
PD, necesitará usar uno de los programas de copia en este enlace SO en la parte superior de Explorer para que realmente funcione. - ingyhere
Buena informacion Probablemente me limitaré a seguir a Robocopy en ese caso. - JimNim