Articulo de referencia

8.3 nombre de archivo

Un nombre de archivo 8.3 (también llamado nombre de archivo corto o SFN ) es aquel que cumple con la convención de nombres de archivo utilizada por CP/M y versiones antiguas de ...

Un nombre de archivo 8.3 (también llamado nombre de archivo corto o SFN ) es aquel que cumple con la convención de nombres de archivo utilizada por CP/M y 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 modernos de Microsoft como nombre de archivo alternativo al nombre de archivo largo, para brindar compatibilidad con programas heredados . La convención de nombres de archivo está limitada por el sistema de archivos FAT . Esquemas de nombres de archivo 8.3 (y 6.3) similares también existieron en sistemas operativos anteriores de CP/M, TRS-80 , Atari y algunos sistemas operativos de minicomputadoras de Data General y Digital Equipment Corporation.

Descripción general

Los nombres de archivo 8.3 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 consiste en un punto. y como máximo tres caracteres adicionales. Para los sistemas que solo admiten nombres de archivo 8.3, los caracteres adicionales se ignoran. Si un nombre de archivo no tiene extensión, un final .no tiene significado (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 hace CamelCap.tpuque sea equivalente al nombre ). Sin embargo, en sistemas operativosCAMELCAP.TPU que no son 8.3 (como casi cualquier sistema operativo moderno) que acceden a 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 internamente los nombres de archivo para preservar las mayúsculas y minúsculas y evitar truncar letras en los nombres, por ejemplo en el caso de VFAT .

VFAT y nombres de archivo 8.3 generados por computadora

VFAT , una variante de FAT con un formato de directorio extendido, se introdujo en Windows 95 y Windows NT 3.5. Permitía nombres de archivo largos (LFN) Unicode con 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 el antiguo software del sistema 8.3 solo reconocerá uno como la entrada de directorio válida).

Para mantener la retrocompatibilidad con aplicaciones heredadas (en DOS y Windows 3.1 ), en sistemas de archivos FAT y VFAT, el sistema operativo genera automáticamente un nombre de archivo 8.3 para cada LFN, a través del cual el archivo puede [también] abrirse, renombrarse o eliminarse, aunque el nombre generado (por ejemplo OVI3KV~N) puede mostrar poca similitud con el original. La generación de nombres de archivo 8.3 en sistemas de archivos NTFS se puede desactivar en todo el sistema (con riesgos). [ 1 ] El nombre de archivo 8.3 se puede obtener utilizando la función GetShortPathName de Kernel32.dll . [ 2 ] [ 3 ]

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

  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 mixed case, el LFN almacenará el nombre en mayúsculas y minúsculas, mientras que el nombre 8.3 será una versión en mayúsculas del mismo.
    • Ejemplo: TextFile.Txtse convierte en TEXTFILE.TXT.
  3. Si el LFN contiene más de 8 caracteres, caracteres no válidos como el espacio (que estaba prohibido por convención, aunque no por las API) y aquellos no permitidos dentro de las tablas de directorio , o una extensión de más de 3 caracteres de longitud, el nombre se despoja de sus caracteres no válidos. Si el nombre comienza con puntos, .los puntos iniciales se eliminan. Otros caracteres como +se cambian por el guion bajo_ , y las letras se ponen en mayúsculas. El nombre despojado se trunca a los primeros 6 caracteres de su nombre base , seguidos de una tilde , seguidos de un dígito , seguidos de un punto ., seguidos de los primeros 3 caracteres de la extensión.
    • Ejemplo: TextFile.Mine.txtse convierte en TEXTFI~1.TXT(o TEXTFI~2.TXT, debería TEXTFI~1.TXTexistir ya). ver +1.2.textse convierte en VER_12~1.TEX. .bashrc.swpse convierte enBASHRC~1.SWP
  4. En todas las versiones de NT, incluyendo 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 sin formato se trunca a los primeros 2 caracteres del nombre base (o 1 si el nombre base tiene solo 1 carácter), seguidos de 4 dígitos hexadecimales derivados de un hash no documentado del nombre del archivo, seguidos de una tilde, seguidos de un solo dígito, seguidos de un punto ., seguidos de los primeros 3 caracteres de la extensión. [ 5 ]
    • Ejemplo: TextFile.Mine.txtse convierte 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 en sus nombres cortos (de modo que ~1los ~9sufijos no sean suficientes para resolver la colisión), el nombre se trunca aún más a 5 letras, seguido de una tilde, seguido de dos dígitos a partir del 10, seguido de un punto .y los primeros 3 caracteres de la extensión.
    • Ejemplo: TextFile.Mine.txtse convierte en TEXTF~10.TXTsi TEXTFI~1.TXTa través TEXTFI~9.TXTde todos ya existen.

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

NTFS , un sistema de archivos utilizado por la familia Windows NT , admite LFN de forma nativa, pero los nombres 8.3 siguen estando disponibles para aplicaciones heredadas. Se sabe que Windows NTVDM utiliza nombres 8.3. Esto se puede deshabilitar opcionalmente en todo el sistema para mejorar el rendimiento en situaciones donde existen muchos archivos con nombres similares en la misma carpeta. [ 1 ] La creación de nombres de archivo 8.3 se puede deshabilitar en todo el sistema y/o por volumen, y los nombres de archivo 8.3 existentes se pueden eliminar mediante fsutiluna clave del Registro. [ 7 ]

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

En los sistemas de archivos VFAT y NTFS , los nombres de archivo 8.3 se almacenan con codificación ANSI, para garantizar la compatibilidad con versiones anteriores.

ReFS ya no admite nombres de archivo 8.3 .

Compatibilidad

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 Compact Flash que se usan en las cámaras. Los nombres de archivo largos VFAT LFN introducidos por Windows 95/98/ME conservaron la compatibilidad, pero el VFAT LFN utilizado en sistemas basados ​​en NT (Windows NT/2K/XP) utiliza un nombre corto 8.3 modificado.

Si un nombre de archivo contiene solo letras minúsculas, o es una combinación de un nombre 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 8.3, no se crea una entrada VFAT en Windows NT y versiones posteriores como XP. En cambio, se utilizan dos bits en el byte 0x0c de la entrada del directorio para indicar que el nombre de archivo debe considerarse como total o parcialmente en minúsculas. Específicamente, el bit 4 significa extensión en minúsculas y el bit 3 nombre 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 problema de compatibilidad con versiones anteriores de Windows (95, 98, ME) que ven nombres de archivo en mayúsculas si se ha utilizado esta extensión y, por lo tanto, pueden cambiar la capitalización 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 nombres de archivo insensible a mayúsculas y minúsculas como lo hacen DOS y Windows. Linux reconocerá esta extensión al leer; [ 8 ] La opción de montaje shortname determina si esta característica se utiliza al escribir. [ 9 ] Para MS-DOS, se puede utilizar DOSLFN de Henrik Haftmann. [ 10 ]

Tabla de directorio

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

Los caracteres válidos para los nombres de archivo de DOS incluyen los siguientes:

  • Letras mayúsculas AZ
  • Números 09
  • Espacio (aunque los espacios finales en el nombre base o en la extensión se consideran relleno y no parte del nombre del archivo, los nombres de archivo con espacios deben ir entre comillas para usarse en una línea de comandos de DOS, y si el comando de DOS se construye mediante programación, el nombre del archivo debe ir entre comillas dobles dobles ( ""... "") cuando se considera una variable dentro del programa que construye 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 :

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

Los nombres de archivo de DOS están en ASCII o en las páginas de códigos . El código 0xE5 como primer byte (ver más abajo) causa problemas cuando se utilizan caracteres que no son ASCII .

Las entradas de 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 la línea de comandos.

En ocasiones, puede ser conveniente convertir un nombre de archivo largo en uno corto, por ejemplo, al trabajar con la línea de comandos. Se pueden seguir unas sencillas reglas para obtener el nombre de archivo correcto en la versión 8.3.

  1. Un nombre de archivo SFN puede tener como máximo 8 caracteres antes del punto. Si tiene más, se deben escribir los primeros 6, seguidos de una tilde ~como séptimo carácter y un número (normalmente 1) como 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 en los nombres de carpetas (si el nombre de la carpeta contiene un punto). Si un nombre de archivo o directorio largo contiene varios puntos, solo se utiliza 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:
    • Al convertir archivos a formato SFN, se deben ignorar los espacios en los nombres de archivo.
    • Ignora todos los puntos excepto el último. No incluyas ningún otro punto, al igual que los espacios. Usa el último punto, si lo hay, y los siguientes caracteres (hasta 3). Por ejemplo, para .manifest, solo se usaría .man.
    • Las comas, los corchetes, los puntos y comas, los signos de igual y los signos de suma se cambian por guiones bajos.
    • No importa si las mayúsculas o minúsculas son importantes; se tratan por igual.

Para averiguar con certeza 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 bien: dir /-nmuestra solo los nombres cortos, en el formato de listado DIR original.

En los sistemas operativos basados ​​en Windows NT , el minicomando ( cmd.exe ) acepta nombres de archivo largos con caracteres comodín (signo de interrogación ?y asterisco *); los nombres de archivo largos con espacios deben escaparse (es decir, encerrarse entre comillas simples o dobles). [ 12 ]

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

Véase también

Referencias

  1. 1 2 "Cómo deshabilitar la creación de nombres 8.3 en particiones NTFS" . Microsoft . Consultado el 26 de febrero de 2021 .
  2. "Función GetShortPathName" . MSDN . Archivado del original el 1 de octubre de 2015. Consultado el 15 de septiembre de 2014 .
  3. "Cómo obtener un nombre de archivo corto a partir de un nombre de archivo largo" . Microsoft . Consultado el 26 de febrero de 2021 .
  4. "Cómo Windows genera nombres de archivo 8.3 a partir de nombres de archivo largos" . Microsoft.
  5. Galvin, Thomas (9 de junio de 2015). "Una historia de dos nombres de archivo" . tomgalvin.uk . Archivado del original el 25 de agosto de 2023. Recuperado el 17 de octubre de 2022 .
  6. "Resumen de Microsoft en una sola línea" .
  7. "¿Cómo se puede evitar que "del *.tmp" elimine archivos *.tmpl en cmd.exe?" . superuser .
  8. "dir.c\fat\fs - kernel/git/torvalds/linux.git - Árbol de código fuente del kernel de Linux" . git.kernel.org . Consultado el 25 de junio de 2018 .
  9. "mount(8): montar sistema de archivos – página man de Linux" .
  10. "DOSLFN" .
  11. Andries Brouwer (26-12-2007). "Entrada de directorio" . El sistema de archivos FAT . Recuperado el 30-07-2013 .
  12. "Uso de nombres de archivo largos" . 11 de septiembre de 2008.