después de una larga investigación, finalmente descubrí que los nombres de ruta no pueden tener más de 256 caracteres, incluso en el último Microsoft Windows 7. Realmente no entiendo por qué hay una limitación tan estúpida, ya que NTFS puede manejar hasta ~ 32,000 caracteres de ruta longitud sin ningún problema desde hace más de una docena de años! ¿No hay ninguna posibilidad de cambiar eso? ¿O hay alguna solución práctica para evitar eso?
260 caracteres son muy pocos, incluso para casos de uso simples, como algunos directorios de fotos anidados con nombres largos de archivo.
Respuestas:
De acuerdo con Microsoft:
La API tradicional de Windows limita los nombres de ruta a 260 caracteres, incluso para aplicaciones desarrolladas para la última versión.
Las aplicaciones que usan la API compatible con Unicode pueden usar una forma de ruta que permite hasta 32767 caracteres. El nombre del archivo debe tener el prefijo
\\?\
y debe ser una ruta absoluta, por ejemplo,\\?\c:\dir\file
o\\?\UNC\server\share\file
. Existen otras limitaciones, consulte la referencia para más detalles.Si ha logrado crear y utilizar una jerarquía de archivos profunda y necesita trabajar con una aplicación que bombardea debido a la longitud del nombre del archivo, hay algunas cosas que puede probar:
Use el
mklink
comando para crear enlaces simbólicos y pase una ruta que los use a su aplicación.Use el
subst
comando para asignar una letra de unidad a un directorio.Inicie su aplicación desde un directorio profundo y pásele rutas relativas cortas.
Reemplace algunos nombres largos por sus alias 8.3 (
micros~1
), suponiendo que todavía existan en Windows 7. Si tiene almicros~1
ladomicros~2
, no sé cómo saber cuál es cuál; tal vez ejecute DOScommand.com
(nuevamente, suponiendo que Windows 7 aún pueda hacerlo).fuente
micros~1
, entonces es esencialmente aleatorio.Puede usar los nombres cortos (8.3) para todas sus carpetas y archivos.
Sin embargo, debe asegurarse de que estén habilitados.
(mi negrita)
También tendrá que escribir un código para obtener el nombre corto del nombre largo.
Fuente
fuente
El nombre del archivo / directorio en NTFS está limitado a 255 puntos de código unicode, ya que la longitud se almacena como un byte. Pero no hay un límite inherente de la longitud total de la ruta.
Muchas llamadas a la API de Win32 (incluido el shell del explorador) tienen el límite de longitud 260-1. Algunas otras llamadas tienen la capacidad de usar el prefijo \\? \ Para obtener hasta 32K (un poco menos, ya que el nombre del volumen se sustituye en Kernel-land)
fuente