Posiblemente hayas intentado sin éxito guardar archivos en Windows con nombres como CON.TXT, NUL.DOC o, como en la imagen, AUX.H. Es un problema más antiguo que Microsoft, pues data de 1974, año en el que Gary Kildall creó CP/M, un sistema operativo muy popular a finales de los años 70.

Cinco años antes, en los Laboratorios Bell, Dennis Ritchie, Brian Kernighan y Ken Thompson, entre otros, desarrollaron Unix, con la idea de que todo podía tratarse como un archivo, incluso dispositivos físicos. Por ejemplo, se crearon archivos especiales para la consola (console), los terminales (tty*, del inglés teletype), las impresoras (lp*, del inglés line printer) y un dispositivo nulo (null). Todos ellos se guardaban en el directorio /dev (del inglés device, dispositivo), y así se sigue haciendo en otros sistemas operativos derivados de Unix, como todos los basados en Linux.

Gary Kildall quiso implementar esta idea en CP/M. El problema es que este sistema operativo estaba diseñado para ordenadores de 8 bits sin disco duro y con poca memoria, por lo que no soportaba directorios, así que los archivos de dispositivo estaban ocultos en cada disquete (de 8 pulgadas en aquella época). Eran los siguientes:

  • CON: - Consola.
  • AUX: - Dispositivo auxiliar. En CP/M 1 y 2 se usaban PUN: (paper tape punch - perforador de cinta de papel) y RDR: (paper tape reader - lector de cinta de papel) en lugar de AUX:.
  • LST: - Impresora.
  • PRN: - Impresora con líneas numeradas.
  • NUL: - Dispositivo nulo.
  • EOF: - Dispositivo de entrada que producía caracteres EOF (end of file - fin de archivo), código 0x1A de ASCII.
  • INP: - Dispositivo de entrada a definir, por defecto el mismo que EOF:.
  • OUT: - Dispositivo de salida a definir, por defecto el mismo que NUL:.

Estos nombres estaban reservados con todas las extensiones posibles, es decir, que no podías crear un CON.DAT o un LST.TXT. Esto era porque algunos programas añadían automáticamente la extensión al nombre del archivo, así, si querías imprimir, ponías LST como nombre de archivo, y aunque el programa añadiera la extensión, lo imprimía igual.

En 1980, Tim Paterson programó QDOS (Quick and Dirty Operating System), inspirado en CP/M, con archivos de dispositivo incluidos. Microsoft compró este sistema operativo por 50.000 dólares y lo renombró PC-DOS para el IBM PC, y más tarde MS-DOS para ordenadores compatibles.

La versión 2.0 de MS-DOS/PC-DOS incluía soporte para directorios, pero Microsoft decidió mantener la compatibilidad haciendo que los archivos especiales estuvieran en cualquier directorio. Esto podía aprovecharse en un archivo por lotes .BAT para comprobar la existencia de un directorio escribiendo IF EXIST C:\DIR\NUL .

La compatibilidad con los dispositivos se mantuvo en Windows 95, 98 y Me, basados en MS-DOS. Un truco conocido para provocar un pantallazo azul era escribir C:\CON\CON en la ventana Ejecutar.

También se mantuvo en los sistemas Windows basados en NT, incluyendo Windows XP y siguientes. Estos son los nombres de archivo que, según Microsoft, no se pueden usar actualmente en Windows, ni siquiera con extensión:

  • CON (consola)
  • PRN (impresora)
  • AUX (auxiliar)
  • NUL (nulo)
  • COM1 a COM9 (puertos serie)
  • LPT1 a LPT9 (puertos paralelos)

Sin embargo, hay una forma de crear carpetas con estos nombres. Por ejemplo, para crear una carpeta con, entra en el Símbolo del sistema (cmd) y escribe md .\con\.