De Wikipedia, la enciclopedia libre
  (Redirigido desde 8.3 )
Saltar a navegación Saltar a búsqueda

Un nombre de archivo 8.3 [1] (también llamado nombre de archivo corto o SFN ) es una convención de nombre de archivo utilizada por versiones antiguas de DOS y versiones de Microsoft Windows anteriores a Windows 95 y Windows NT 3.5 . También se utiliza en los sistemas operativos de Microsoft modernos como un nombre de archivo alternativo al nombre de archivo largo para compatibilidad con programas heredados . La convención del nombre de archivo está limitada por el sistema de archivos FAT . También han existido esquemas de nomenclatura de archivos 8.3 similares en CP / M , TRS-80 , Atari anterioresy algunos sistemas operativos de miniordenadores de Data General y Digital Equipment Corporation .

Resumen [ editar ]

8.3 los nombres de archivo están limitados a un máximo de ocho caracteres (después de cualquier especificador de directorio), seguidos opcionalmente por una extensión de nombre de archivo que consta de un punto . y como máximo tres caracteres más. Para los sistemas que solo admiten nombres de archivo 8.3, se ignoran los caracteres en exceso. Si un nombre de archivo no tiene extensión, un final .no tiene importancia (es decir, myfiley myfile.son equivalentes). Además, los nombres de archivos y directorios están en mayúsculas en este sistema, aunque los sistemas que usan el estándar 8.3 generalmente no distinguen entre mayúsculas y minúsculas (lo que CamelCap.tpuequivale al nombre CAMELCAP.TPU). Sin embargo, en sistemas operativos no 8.3(como casi cualquier sistema operativo moderno) al acceder a los sistemas de archivos 8.3 (incluidos los disquetes con formato DOS , pero también algunas tarjetas de memoria modernas y sistemas de archivos en red), el sistema subyacente puede alterar los nombres de los archivos internamente para preservar el caso y evitar truncar letras en los nombres. , por ejemplo en el caso de VFAT .

VFAT y nombres de archivo 8.3 generados por computadora [ editar ]

VFAT , una variante de FAT con un formato de directorio extendido, se introdujo en Windows 95 y Windows NT 3.5. Permitió nombres de archivo largos (LFN) Unicode de mayúsculas y minúsculas además de los nombres clásicos de 8.3 mediante el uso de múltiples registros de entrada de directorio de 32 bytes para nombres de archivo largos (de tal manera que solo uno será reconocido por el antiguo software del sistema 8.3 como una entrada de directorio válida ).

Para mantener la compatibilidad con versiones anteriores de las aplicaciones heredadas (en DOS y Windows 3.1 ), en los sistemas de archivos FAT y VFAT se genera automáticamente un nombre de archivo 8.3 para cada LFN, a través del cual el archivo aún se puede renombrar, eliminar o abrir, aunque el nombre generado (p. Ej. OVI3KV~N) puede mostrar poca similitud con el original. En los sistemas de archivos NTFS, la generación de nombres de archivo 8.3 se puede desactivar. [2] El nombre de archivo 8.3 se puede obtener usando la función GetShortPathName de Kernel32.dll . [3] [4]

Aunque no existe un algoritmo obligatorio para crear el nombre 8.3 a partir de un LFN, Windows usa la siguiente convención: [5]

  1. Si el LFN es 8.3 en mayúsculas, no se almacenará ningún LFN en el disco.
    • Ejemplo: TEXTFILE.TXT
  2. Si el LFN es 8.3 en mayúsculas y minúsculas, el LFN almacenará el nombre en mayúsculas y minúsculas, mientras que el nombre 8.3 será una versión en mayúsculas.
    • Ejemplo: se TextFile.Txtconvierte en TEXTFILE.TXT.
  3. Si el nombre de archivo contiene caracteres no permitidos en un nombre 8.3 (incluido el espacio que no fue permitido por convención, pero no por las API) o alguna de las partes es demasiado larga, el nombre se elimina de los caracteres no válidos, como espacios y puntos adicionales. Si el nombre comienza con puntos ., se eliminan los puntos iniciales. Otros caracteres como, por ejemplo, +se cambian al subrayado _ y las letras se ponen en mayúsculas. El nombre despojado se trunca a las primeras 6 letras de su nombre base , seguido de una tilde , seguido de un solo dígito , seguido de un punto ., seguido de los primeros 3 caracteres de la extensión.
    • Ejemplo: se TextFile.Mine.txtconvierte en TEXTFI~1.TXT(o TEXTFI~2.TXT, TEXTFI~1.TXTya debería existir). ver +1.2.textse convierte VER_12~1.TEX. .bashrc.swpse convierte enBASHRC~1.SWP
  4. En todas las versiones de NT, incluidas Windows 2000 y posteriores, si ya existen al menos 4 archivos o carpetas con la misma extensión y los primeros 6 caracteres en sus nombres cortos, el LFN eliminado se trunca a las 2 primeras letras del nombre base (o 1 si el nombre base tiene solo 1 letra), seguido de 4 dígitos hexadecimales derivados de un hash no documentado del nombre del archivo, seguido de una tilde, seguido de un solo dígito, seguido de un punto ., seguido de los primeros 3 caracteres de la extensión.
    • Ejemplo: se TextFile.Mine.txtconvierte en TE021F~1.TXT.
  5. En Windows 95, 98 y ME, si hay más de 9 archivos o carpetas con la misma extensión y los primeros 6 caracteres y en sus nombres cortos (de manera que ~1a través de ~9sufijos no son suficientes para resolver la colisión), el nombre se trunca más de 5 letras, seguidas de una tilde, seguidas de dos dígitos a partir de 10, seguidos de un punto .y los primeros 3 caracteres de la extensión.
    • Ejemplo: se TextFile.Mine.txtconvierte en TEXTF~10.TXTsi a TEXTFI~1.TXTtravés de TEXTFI~9.TXTtodos ya existen.

NTFS , un sistema de archivos utilizado por la familia Windows NT , admite LFN de forma nativa, pero los nombres 8.3 todavía están disponibles para aplicaciones heredadas. Opcionalmente, esto se puede deshabilitar para mejorar el rendimiento en situaciones en las que existe una gran cantidad de archivos con nombres similares en la misma carpeta. [2]

El sistema de archivos ISO 9660 (utilizado principalmente en discos compactos ) tiene limitaciones similares en el Nivel 1 más básico, con la restricción adicional de que los nombres de directorio no pueden contener extensiones y que algunos caracteres (especialmente guiones ) no están permitidos en los nombres de archivo. El nivel 2 permite nombres de archivo de hasta 31 caracteres, más compatible con los nombres de archivo clásicos de AmigaOS y Mac OS .

Durante el caso antimonopolio de Microsoft de 2001 , los nombres MICROS ~ 1 y MICROS ~ 2 se utilizaron con humor para referirse a las empresas que podrían existir después de una propuesta escisión de Microsoft. [6]

Compatibilidad [ editar ]

Esta tecnología heredada se utiliza en una amplia gama de productos y dispositivos, como estándar para el intercambio de información, como las tarjetas de memoria flash compactas utilizadas en las cámaras. Los nombres de archivo largos VFAT LFN introducidos por Windows 95/98 / ME conservaron la compatibilidad. Pero el VFAT LFN usado en sistemas basados ​​en NT (Windows NT / 2K / XP) usa un nombre corto 8.3 modificado.

Si un nombre de archivo contiene solo letras minúsculas, o es una combinación de un nombre de base en minúsculas con una extensión en mayúsculas , o viceversa; y no tiene caracteres especiales, y se ajusta a los límites de 8.3, no se crea una entrada VFAT en Windows NT y versiones posteriores como XP. En su lugar, se utilizan dos bits en el byte 0x0c de la entrada del directorio para indicar que el nombre del archivo debe considerarse total o parcialmente en minúsculas. Específicamente, el bit 4 significa una extensión en minúsculas y el bit 3 un nombre de base en minúsculas , lo que permite combinaciones como example.TXTo HELLO.txtpero no Mixed.txt. Pocos otros sistemas operativos admiten esto. Esto crea un cambio de nombre de archivo de compatibilidad con versiones anterioresProblema con las versiones anteriores de Windows (95, 98, ME) que ven nombres de archivos en mayúsculas si se ha utilizado esta extensión y, por lo tanto, pueden cambiar las mayúsculas de un archivo cuando se transporta, como en una unidad flash USB. Esto puede causar problemas para los sistemas operativos que no exhiben el comportamiento de nombre de archivo que no distingue entre mayúsculas y minúsculas como lo hacen DOS y Windows. Las versiones actuales (> 2.6 [ cita requerida ] ) de Linux reconocerán esta extensión al leer; [7] el nombre corto de la opción de montaje determina si esta función se utiliza al escribir. [8] Para MS-DOS, puede utilizar DOSLFN de Henrik Haftmann. [9]

Tabla de directorio [ editar ]

Una tabla de directorio es un tipo especial de archivo que representa un directorio. Cada archivo o directorio almacenado en él está representado por una entrada de 32 bytes en la tabla. Cada entrada registra el nombre, extensión, atributos ( archivo , directorio, oculto, de solo lectura, sistema y volumen), la fecha y hora de creación, la dirección del primer grupo de datos del archivo / directorio y finalmente el tamaño del archivo. directorio de archivos.

Los caracteres legales para los nombres de archivo de DOS incluyen los siguientes:

  • Letras mayúsculas A-Z
  • Números 0-9
  • Espacio (aunque los espacios finales en el nombre base o la extensión se consideran como relleno y no como parte del nombre del archivo, también los nombres de archivo con espacios deben estar entre comillas para ser usados ​​en una línea de comando de DOS, y si el DOS El comando se crea mediante programación, el nombre del archivo debe estar entre comillas dobles ( ""... "") cuando se ve como una variable dentro del programa que crea el comando de DOS).
  • !, #, $, %, &, ', (, ), -, @, ^, _, `, {, },~
  • Valores 128-255 (aunque si los servicios NLS están activos en DOS, algunos caracteres interpretados como minúsculas no son válidos y no están disponibles)

Esto excluye los siguientes caracteres ASCII :

  • ", *, +, ,, /, :, ;, <, =, >, ?, \, [, ], |[10]
    Windows / MS-DOS no tiene shell carácter de escape
  • .( U + 002E . FULL STOP ) dentro de los campos de nombre y extensión, excepto en las entradas .y ..(ver más abajo)
  • Letras minúsculas a- z, almacenadas como A- Zen FAT12 / FAT16
  • Caracteres de control 0–31
  • Valor 127 ( DEL ) [ dudoso ]

Los nombres de archivo de DOS están en el juego de caracteres OEM . El código 0xE5 como primer byte (ver más abajo) crea problemas cuando se utilizan caracteres extra-ASCII .

Las entradas del directorio, tanto en la región del directorio raíz como en los subdirectorios, tienen el siguiente formato:

Trabajar con nombres de archivo cortos en un símbolo del sistema [ editar ]

A veces, puede ser conveniente convertir un nombre de archivo largo en un nombre de archivo corto, por ejemplo, cuando se trabaja con el símbolo del sistema. Se pueden seguir algunas reglas simples para obtener el nombre de archivo 8.3 correcto.

  1. Un nombre de archivo SFN puede tener como máximo 8 caracteres antes del punto. Si tiene más que eso, se deben escribir los primeros 6, luego una tilde ~como el séptimo carácter y un número (generalmente 1) como el octavo. El número lo distingue de otros archivos con las mismas seis primeras letras y la misma extensión.
  2. Los puntos son importantes y deben usarse incluso para los nombres de las carpetas (si hay un punto en el nombre de la carpeta). Si hay varios puntos en el nombre largo del archivo / directorio, solo se usa el último. Los puntos anteriores deben ignorarse. Si hay más de tres caracteres después del último punto, solo se utilizan los tres primeros.
  3. Generalmente:
    • Cualquier espacio en los nombres de archivo debe ignorarse al convertir a SFN.
    • Ignore todos los períodos excepto el último. No incluya ningún otro período, al igual que los espacios. Utilice el último punto, si lo hay, y los siguientes caracteres (hasta 3). Por ejemplo, para .manifest, solo se usaría .man.
    • Las comas, corchetes, punto y coma, los signos = y los signos + se cambian a guiones bajos.
    • Las mayúsculas y minúsculas no son importantes, las mayúsculas y minúsculas se tratan por igual.

Para saber con seguridad los nombres SFN o 8.3 de los archivos en un directorio

uso: dir /xmuestra los nombres cortos, si los hay, y los nombres largos.

o: dir /-nmuestra solo los nombres cortos, en el formato de listado DIR original.

En los sistemas operativos basados en Windows NT , los subprogramas del símbolo del sistema ( cmd.exe ) aceptan nombres de archivo largos con caracteres comodín (signo de interrogación ?y asterisco *); Los nombres de archivo largos con espacios en ellos deben tener un formato de escape (es decir, entre comillas simples o dobles). [11]

A partir de Windows Vista , los comandos de la consola y los subprogramas de PowerShell realizan una coincidencia de patrones limitada al permitir comodines en el nombre de archivo y cada subdirectorio en la ruta del archivo y sustituyendo silenciosamente la primera entrada de directorio coincidente (por ejemplo, cambiará el directorio actual a ).C:\>CD \prog*\inter*C:\Program Files\Internet Explorer\

Ver también [ editar ]

  • Tabla de asignación de archivos (FAT)
  • Diseño del sistema de archivos FAT
  • Sistema de archivos
  • Extensión de nombre de archivo

Referencias [ editar ]

  1. ^ "Nombrar un archivo" . Red de desarrolladores de Microsoft . Archivado desde el original el 15 de octubre de 2008 . Consultado el 22 de marzo de 2007 .
  2. ^ a b "Cómo deshabilitar la creación de nombres 8.3 en particiones NTFS" . Microsoft . Consultado el 26 de febrero de 2021 .
  3. ^ "Función GetShortPathName" . MSDN . Archivado desde el original el 1 de octubre de 2015 . Consultado el 15 de septiembre de 2014 .
  4. ^ "Cómo obtener un nombre de archivo corto a partir de un nombre de archivo largo" . Microsoft . Consultado el 26 de febrero de 2021 .
  5. ^ "Cómo Windows genera nombres de archivo 8.3 a partir de nombres de archivo largos" . Microsoft.
  6. ^ "Microsoft One-liner Digest" .
  7. ^ "dir.c \ fat \ fs - kernel / git / torvalds / linux.git - árbol de fuentes del kernel de Linux" . git.kernel.org . Consultado el 25 de junio de 2018 .
  8. ^ "mount (8): montar el sistema de archivos - página del manual de Linux" .
  9. ^ http://adoxa.altervista.org/doslfn/index.html
  10. Andries Brouwer (26 de diciembre de 2007). "Entrada de directorio" . El sistema de archivos FAT . Consultado el 30 de julio de 2013 .
  11. ^ https://technet.microsoft.com/en-us/library/cc976806.aspx