Uno de nuestros clientes habitualmente usa nombres de ruta muy largos (varias carpetas anidadas, con nombres largos) y habitualmente nos encontramos con "problemas de educación del usuario" para acortar la ruta a menos de 260 caracteres.
¿Existe una solución técnica disponible? ¿Podemos mover algún tipo de interruptor en Windows 7 y Windows 2008 R2 para decir "sí, simplemente ignoren estos problemas históricos y hagan que funcione el nombre de la ruta de caracteres +260".
PD: he leído y no he editado por nombres de archivos, rutas y espacios de nombres
windows
windows-server-2008
windows-7
ntfs
Christopher Edwards
fuente
fuente
Respuestas:
Los métodos están ahí, pero hasta que Microsoft vuelva a codificar el widget del navegador de archivos, estamos prácticamente atrapados con ese viejo problema. Es subóptimo, pero así es como funciona.
fuente
Solo menciono un truco que aún no veo mencionado aquí.
Tome 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 completa del archivo tiene 290 caracteres de longitud. El shell (Windows Explorer) y la mayoría de las utilidades de línea de comandos probablemente no le permitirán tocarlo.
Use el
subst
comando así: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 se encontrará con el problema "El nombre del archivo es demasiado largo".
En la API de Windows, hay una constante infame conocida como
MAX_PATH
. MAX_PATH tiene 260 caracteres. El sistema de archivos NTFS en realidad admite rutas de archivo de hasta 32,767 caracteres. Y aún puede usar nombres de ruta largos de 32,767 caracteres accediendo a las versiones Unicode (o "ancho") de las funciones de la API de Windows, y también prefijando la ruta con\\?\
.MAX_PATH
se estableció en piedra hace mucho 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 es muy difícil para Microsoft cambiar ahora, ya que ahora tenemos miles de programas y aplicaciones, incluidos algunos escritos por Microsoft, que utilizanMAX_PATH
y fallaría de formas nuevas y extrañas si la constante se cambiara repentinamente (Desbordamientos de búfer, corrupción de montón, etc.)fuente
subst
uso de uniones de directorio, que pueden ser más convenientes para la limpieza si solo está buscando hacer algunos cambios rápidos. Yo uso Enlace Shell Extension , pero sólo se puede utilizar elmklink
comando de este modo:mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"
.Puede sortear 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
fuente
c:\usr-data
a `c: \ Users \ VeryLongUserName \ LongFolderName` y decirle que use el primero, pero si regularmente nombra carpetas en caracteres de 40 y tantos, esto no ayudará ...Microsoft ahora tiene una solución disponible para este comienzo con Windows 10, que se explica en el artículo de MSDN Naming Files, Paths and Namespaces .
darthcoder ya respondió con detalles sobre la solución de la
\\?\C:
notación, pero ahora hay una clave de registro en laHKLM\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 soporte para el control de la Política de grupo en laComputer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths
organización o la implementación de todo el grupo si es necesario.fuente