Ser metódico y ordenado tiene sus pros y sus contras, tanto como informático como en la vida real. ¿Pros? Tiendes a tener todo bien organizadito y estructurado: múltiples niveles y subniveles de carpetas, archivos y nombres de proyecto bien descriptivos, en la medida de lo posible en inglés, ficheros readme.txt por todos los lados, confías mucho e intentas sacar el máximo partido a los sistemas de control de versiones, y un largo etc. Sin embargo, ser un poquitín maniático también tiene sus pegas:
Como buen sabueso tecnológico que
Por si a alguien le quedaba alguna duda, para demostrar una vez más lo cabezón que soy, no me he podido resistir a probar la repetitiva tarea de crear carpetas vía línea de comandos, hasta que la consola se ha aburrido de mí y ha dicho "¡¡¡Vale ya Miguel!!!":

Creyéndome a ciegas lo que dice el articulo de MSDN y sin haberlo probado (es viernes por la tarde, habrá que salir un poquito a la calle...), al parecer es posible saltarse esta estricta restricción utilizando ciertas funciones en versión Unicode, disponibles también en la propia API de Windows. Con esta puerta trasera, anteponiendo el prefijo "\\?\" a la ruta conflictiva en cuestión, se supone que la longitud del path podría aumentar aproximadamente hasta los 32.767 caracteres. ¡Casi ná! Así que ya sabes, si aún "trampeando" la longitud del path máximo te sigues pasando, el Dr. Lonifasiko te recomienda encarecidamente que vayas a mirarte, porque más que ordenado, ¡eres un auténtico path-maníaco y estás un poquito enfermo!
SaludoX.
SaludoX.
7 comentarios:
Hola, mi nombre es Miguel y soy un Path-maníaco...
Y dicho esto, quiero añadir: ¡¡Qué frikazo estás hecho!!
Jajaja, la verdad es que el tema de los path en Windows viene "de serie" con estas limitaciones desde tiempo atrás. Recuerdo que, cuando era joven, me daba por hacer tonterías tan grandes como crear un archivo de proceso por lotes (.bat) "recursivo", que iba creando directorios (en aquel entonces vivíamos en el inframundo del MS-DOS y las carpetas no eran carpetas, sino directorios) de forma automática, y dentro del directorio creado copiaba el .bat y volvía a llamarlo... y así hasta el infinito... o hasta que el MS-DOS reventaba con un error similar al que te daba Windows.
Después de estas perturbaciones mentales que me llevaron a ser informático, sufrí nuevamente el problema de los path con la grabación de copias de seguridad en CD y DVD. En los tiempos en que se usaba el sistema de archivos Joliet, el tamaño máximo para el path (incluido el nombre del archivo) era de 128 caracteres, y con un nivel máximo de 8 subdirectorios. La llegada del ISO 9660:1999 extendió la longitud máxima del path a 207 caracteres, eliminando además la limitación de 8 subdirectorios de profundidad.
La verdad es que este tema de los path resulta interesante, ya que puede provocar errores en nuestras aplicaciones si no se tienen en cuenta. Respecto a la prueba que has llevado a cabo, he llegado un poco más lejos. Es cierto que Word chiva que la cadena creada tiene 240 caracteres, pero uno (que es un poco maníaco) se ha puesto a contar las ‘\’ que contiene tu path y son exactamente 20. Si tenemos en cuenta que ‘\’ es un carácter especial, y que para tratarlo por ejemplo en .NET tenemos que hacerlo con un carácter de escape (‘\\’), es posible que esos caracteres estén “contando doble” en el path. Si es así, tendríamos exactamente los 260 caracteres de longitud máxima que comentabas. Sin embargo, he hecho la misma prueba con un nombre de directorio más corto (12345), y obtengo resultados parecidos: longitud del path, 239 caracteres, número de slash, 36… ahí ya no salen las cuentas: 239+36=272… nos salimos del tamaño máximo del path. Así que, en efecto, nada de caracteres especiales: el SO se guarda algo :) .
Lo que me era completamente desconocido era el uso de "\\?\" como prefijo a la ruta, lo que elimina dicha limitación en la longitud del path. Como es domingo por la mañana, tampoco está el cuerpo para abusar del él por lo que, de momento, me creo lo que dices que dicen en la MSDN ;) Pero habrá que probarlo, porque resulta interesante (aunque imagino que poco “transportable” a otros sistemas). Y luego tenemos al amigo Vista por ahí, que a saber si no nos tratará de crackers o vaya usted a saber qué al vernos trastear en sus entrañas del sistema de archivos, jejeje.
En cualquier caso, un post muy, muy, chulo. Saludos, ¡y a disfrutar de lo que queda del finde!
Ya ves Mithdraug, había oído hablar de la limitación del path en Windows, pero han tenido que ser mis manías y "el amigo Visual Studio" quienes han destapado la caja de Pandora.
Por cierto, tus pruebas y ejemplos complementarios tampoco se quedan cortos, me parece que voy a tener que luchar duro en la carrera hacia el premio "frikazo of the year" ;-).
Lo del prefijo "\\?\" lo dejaremos para otro post, aunque no tengo todas conmigo respecto a que eso funcione tan alegremente..., seguro que hay que invocar mediante programación funciones de infinitésimo nivel de la API de Windows; por el momento, confiaremos en MSDN ;-).
SaludoX.
Jejeje, es que al contar los 20 "\" y saber que era un carácter especial, pues me salía la suma exacta... y ya no era cosa de confiar en el "podría ser", de ahí la prueba. Y al final el podría ser es que no es, y que por algún motivo el SO se reserva en la buchaca, como bien decías, ese espacio ;)
Lo del "\\?\" lo mismo lo pongo de ejercicio a unos alumnos que me han salido para un curso acelerado de .NET... mmmmm... qué idea me está dando eso... ;)
Un saludo!!
Buenos dias
He leido tu comentario sobre Longitud máxima del path en Windows
y me gustaria ampliarlo pero mis conocimientos son muy escasos y no se seguir la ruta que indicas:
Serias tan amable de postearla detalladamente los pasos.
saludos y gracias
al parecer es posible saltarse esta estricta restricción utilizando ciertas funciones en versión Unicode, disponibles también en la propia API de Windows. Con esta puerta trasera, anteponiendo el prefijo "\\?\" a la ruta conflictiva en cuestión, se supone que la longitud del path podría aumentar aproximadamente hasta los 32.767 caracteres.
Hola, he leido tu articulo y es muy bueno, pero no soy muy dado a la programacion y seria posible que nos expliques paso a paso como desactivar los 256 caracteres.
te dejo mi mail, giorrivera@aim.com
Hola.
Para los usuarios básicos, ¿cómo podemos añadir esos caracteres (\\?\)en una ruta existente o crear una nueva con ellos en win xp?
Alguien sabe si con windows 7 pasa lo mismo? ¿O con windows 8?
Muchas gracias.
O es que sólo se usan para conectarse desde equipos con windows a servidores de archivos linux, los cuales sí pueden tener estructuras de carpetas mucho más largas que los sistemas windows?
Publicar un comentario