Nombres y Caracteres prohibidos en los nombres de archivo y carpetas en Windows…y otras historias

A mediados y finales de la década de los 70, un tal Tim Paterson escribió un sistema operativo basado en parte en CP/M (Control Program/Monitor, un sistema operativo diseñado para los procesadores 8086 de Intel escrito por Gary Kildall) al que llamó QDOS (Quick and Dirty Operating System) que traducido al Español sería Sistema Operativo Rápido y Sucio.


86-DOS, la versión de QDOS distribuida por Seattle Computer Products

 

A principio de los 80, Microsoft trabajaba para IBM, que en ese momento era uno de los grandes líderes en la fabricación de PCs. Los equipos fabricados por IBM tenían el inconveniente que no disponían de un sistema operativo propio, usando habitualmente el sistema operativo Microsoft BASIC-86.


Microsoft BASIC-86 en un ATARI

 

Tratando de solucionar esto, hizo gestiones con SCP (Seattle Computer Products), propietaria en ese momento de QDOS para adquirir los derechos de instalación y distribución de su sistema operativo en los PC de IBM a cambio de 250 mil dólares. IBM y SCP no lograron ponerse de acuerdo pues IBM exigía la aceptación de una cláusula de no divulgación. Al no lograr el acuerdo, IBM comenta a Bill Gates la existencia de QDOS y pide que sea este el que intentase conseguir la licencia.

Bill Gates logra comprar la licencia no exclusiva de QDOS a SCP por 50 mil dólares. El mérito de Bill Gates fue no tratar de ser exclusivo y en la compra de la licencia, dejaba a SCP en libertad de vender nuevamente QDOS a otros, e igualmente, Microsoft tenía libertad para modificar y revender el sistema.

Microsoft usó QDOS como base para crear PC-DOS, el nuevo sistema operativo propio de IBM que tanto ansiaba.


PC-DOS v.1.10 de IBM

 

Para ayudar en la portabilidad y adaptación de QDOS a PC-DOS, IBM contrata al mismísimo Tim Paterson que en ese momento se da cuenta que en realidad Microsoft había sido simplemente en enlace entre IBM y SCP para conseguir QDOS, pues por sí mismos no lograban hacerse con él, relación que Bill Gates y su socio Paul Allen se cuidaron de no mencionar nunca en las negociaciones.


Tim Paterson, creador de QDOS, el antecesor de MS-DOS

 

Este engaño sirvió como base para una serie de demandas por parte de Seattle Computer Products contra Microsoft por encubrir su relación con IBM para comprar su sistema operativo a un precio desproporcionadamente barato. Las demandas se solucionaron cuando se firmó un acuerdo por el cual SCP recibiría un millón de dólares en concepto de daños.

Posteriormente, SCP también demandaría a IBM por considerar que PC-DOS duplicaba buena parte de QDOS. Aunque Microsoft tenía derecho a adaptar QDOS, IBM no. La demanda no prosperó, pero IBM y SCP llegaron a un acuerdo por el cual IBM incorporaría el sistema operativo CP/M-86 de SCP en algunos de sus PC.

 

PC/M-86 en un Commodore

 

Toda esta perorata posiblemente no tenga mucho que ver con el tema de este artículo, pero tenía que rellenar espacio y me pareció buena idea  hacerlo con esta historia.

 

Traten de crear un archivo o carpeta cualquiera con el nombre CON…o con NUL, o con AUX…

El mensaje de error les indicará que dichos nombres no se pueden usar porque están reservados por Windows para su uso interno o bien que es un dispositivo no válido.

 

Algunos mensajes de error al tratar de usar nombres prohibidos como nombres de archivo

 

Cuando Tim Paterson escribió QDOS, entre algunas mejoras realizadas incorporó los puertos de comunicación y nombres de dispositivos al sistema de archivos, lo que facilitaba enormemente algunos trabajos, así que esos nombres los agregó a una lista de nombres de archivo prohibidos y de uso exclusivo del sistema para no descojonarlo todo.

Cuando QDOS pasó a manos de Microsoft y este lo transformó en el posterior MS-DOS, cambió algunos nombres de puertos y dispositivos, pero la idea de prohibirlos como nombres de archivo se mantuvo. Y desde entonces ahí han estado…prohibidos. Eso es así porque aunque ya no se usen algunos de esos puertos, desde sus inicios Microsoft ha estado usando una política de retrocompatibilidad y mantiene mucho del código viejo (muy viejo) en sus nuevas versiones de Windows. Algún ingeniero de Microsoft que trabaja en el núcleo de Windows ha asegurado en alguna ocasión que si aunamos todo el código fuente usado en el desarrollo de Windows desde sus anales (incluyendo código de pruebas, etc…) en un solo proyecto unificado…tendría un tamaño descomunal de aproximadamente medio Terabyte y más de 4 millones de archivos. Así entendemos que haya mucho código remanente escondido en las tripas de Windows que los de "limpieza" han dejado por ahí tirado.


Al igual que con algunos nombres, hay algunos caracteres que no podemos usar en los nombres de archivo. Son los llamados "caracteres especiales" y no los podemos usar porque Windows los usa de forma interna para diferentes propósitos. el * significa (todo, o todos los archivos)…los signos / y \ hacen referencia a ubicaciones en el disco, etc…


Algunos mensajes al tratar de usar caracteres reservados en el nombre de archivo


Aparte de los nombres y caracteres prohibidos en el nombre de un archivo, tenemos un límite en cuanto a la longitud del mismo.

En los tiempos prehistóricos de MS-DOS, la longitud del nombre de un archivo estaba limitado a 8 caracteres. Esto ha sido así a lo largo de varias versiones de Windows por razones técnicas. Con el paso del tiempo se ha logrado superar esta limitación y actualmente podemos usar nombres de archivo de 256 caracteres, siendo el límite de la ruta completa de 260 caracteres más el punto de separación de extensión (denominado null terminador). La extensión en sí no se cuenta. Así "C:\" se consideran 3 caracteres

C:\ + Nombre de archivo de 256 caracteres máximo + . = 260 caracteres máximo


Esta longitud máxima de la ruta completa debemos tenerla muy en cuenta cuando almacenamos archivos en unidades externas fuera de la raíz del disco, usando múltiples subcarpetas internas.


La lista de nombres prohibidos es la siguiente. Es posible que con el tiempo la misma pueda ampliarse, aunque muy muy seguramente no se recorte:


CON

PRN

AUX

CLOCK$

NUL

COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8 y COM9

LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9


Y la lista de caracteres especiales y que no se pueden usar en el nombre de un archivo es:


\

/

:

*

?

"

<

>

|


Y esto es todo lo que tenía para escribir hoy. Espero que les resultara al menos algo interesante y les deseo felicidad y alegría….que desear aun no cuesta.

Sean felices como lombrices

Debemos rechazar lo imposible, no lo improbable (TotuWare parafraseando a Oscar Wilde)

0 comentarios