stringtranslate.com

8.3 nombre de archivo

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 modernos de Microsoft como nombre de archivo alternativo al nombre de archivo largo , para brindar compatibilidad con programas heredados . La convención de nombre de archivo está limitada por el sistema de archivos FAT . También han existido esquemas de nombres de archivos 8.3 similares en sistemas operativos de minicomputadoras anteriores CP/M , TRS-80 , Atari y algunos Data General y Digital Equipment Corporation .

Descripción general

Los nombres de archivos 8.3 están limitados a un máximo de ocho caracteres (después de cualquier especificador de directorio), seguidos opcionalmente de una extensión de nombre de archivo que consta de un punto . y como máximo tres caracteres más. Para sistemas que solo admiten nombres de archivos 8.3, se ignoran los caracteres sobrantes. Si un nombre de archivo no tiene extensión, el 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 utilizan el estándar 8.3 normalmente no distinguen entre mayúsculas y minúsculas (lo que CamelCap.tpuequivale al nombre CAMELCAP.TPU). Sin embargo, en sistemas operativos que no son 8.3 (como casi cualquier sistema operativo moderno) que acceden a sistemas de archivos 8.3 (incluidos los disquetes formateados en DOS , pero también algunas tarjetas de memoria modernas y sistemas de archivos en red), el sistema subyacente puede alterar los nombres de archivos internamente para conservar mayúsculas y minúsculas y evitar truncar letras en los nombres, por ejemplo en el caso de VFAT .

VFAT y nombres de archivos 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 archivos largos (LFN) Unicode en mayúsculas y minúsculas además de los nombres clásicos 8.3 mediante el uso de múltiples registros de entrada de directorio de 32 bytes para nombres de archivos 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 compatibilidad con aplicaciones heredadas (en DOS y Windows 3.1 ), en los 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 [también] se puede abrir, cambiar de nombre o eliminar. aunque el nombre generado (p. ej. OVI3KV~N) puede mostrar poca similitud con el original. La generación de nombres de archivos 8.3 en sistemas de archivos NTFS se puede desactivar en todo el sistema (con riesgos). [2] El nombre del archivo 8.3 se puede obtener utilizando 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 utiliza 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 del mismo.
    • Ejemplo: TextFile.Txtse convierte en TEXTFILE.TXT.
  3. Si el nombre del archivo contiene caracteres no permitidos en un nombre 8.3 (incluido el espacio que no está permitido por convención, aunque no por las API) o si alguna parte es demasiado larga, se eliminan del nombre los caracteres no válidos, como espacios y puntos adicionales. Si el nombre comienza con puntos, .se eliminan los puntos iniciales. Otros caracteres como +se cambian al guión bajo _ y las letras se ponen en mayúsculas. Luego, el nombre eliminado 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 .y seguido de los primeros 3 caracteres de la extensión.
    • Ejemplo: TextFile.Mine.txtse convierte en TEXTFI~1.TXT(o ya TEXTFI~2.TXTdebería TEXTFI~1.TXTexistir). ver +1.2.textse convierte en VER_12~1.TEX. .bashrc.swpse convierteBASHRC~1.SWP
  4. En todas las versiones NT, incluido 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 primeras 2 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 .y seguido de los primeros 3 caracteres de la extensión. [6]
    • 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 y en sus nombres cortos (de modo que los ~1sufijos ~9no sean suficientes para resolver la colisión), el nombre se trunca aún más a 5. letras, seguidas de una tilde, seguidas 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 si TEXTF~10.TXTtodos ya existen.TEXTFI~1.TXTTEXTFI~9.TXT

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 de división de Microsoft. [7]

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 desactivar en todo el sistema para mejorar el rendimiento en situaciones donde existen grandes cantidades de archivos con nombres similares en la misma carpeta. [2] La creación de nombres de archivos 8.3 se puede deshabilitar en todo el sistema y/o por volumen, y los nombres de archivos 8.3 existentes se pueden eliminar usando fsutilo una clave de Registro. [8]

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 (en particular guiones ) no están permitidos en los nombres de archivos. El nivel 2 permite nombres de archivos de hasta 31 caracteres, más compatibles con los nombres de archivos clásicos de AmigaOS y Mac OS .

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

ReFS ya no admite nombres de archivos 8.3 .

Compatibilidad

Esta tecnología heredada se utiliza en una amplia gama de productos y dispositivos, como estándar para intercambiar información, como las tarjetas flash compactas utilizadas en las cámaras. Los nombres de archivos 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 modificado 8.3.

Si un nombre de archivo contiene sólo 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 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 extensión en minúscula y el bit 3 nombre base en minúscula , lo que permite combinaciones como example.TXTo HELLO.txtpero no Mixed.txt. Pocos otros sistemas operativos admiten esto. Esto crea un problema de manipulación de nombres de archivos de compatibilidad con 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 el uso de mayúsculas de un archivo cuando se transporta, como en una unidad flash USB. Esto puede causar problemas en los sistemas operativos que no muestran el comportamiento de nombres de archivos que no distinguen entre mayúsculas y minúsculas como lo hacen DOS y Windows. Linux reconocerá esta extensión al leer; [9] el nombre corto de la opción de montaje determina si esta función se utiliza al escribir. [10] Para MS-DOS puede utilizar DOSLFN de Henrik Haftmann. [11]

tabla de directorio

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, 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 grupo de datos del archivo/directorio y finalmente el tamaño del directorio de archivos.

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

Esto excluye los siguientes caracteres ASCII :

Los nombres de archivos DOS están en el juego de caracteres OEM . El código 0xE5 como primer byte (ver más abajo) genera 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 archivos cortos en un símbolo del sistema

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 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 para los nombres de carpetas (si hay un punto en el nombre de la carpeta). Si hay varios puntos en el nombre largo del archivo/directorio, solo se utiliza el último. Los puntos anteriores deben ignorarse. Si hay más de tres caracteres después del último punto, sólo se utilizan los tres primeros.
  3. Generalmente:
    • Cualquier espacio en los nombres de archivos debe ignorarse al convertir a SFN.
    • Ignore todos los períodos excepto el último. No incluya ningún otro punto, 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, los corchetes, el punto y coma, los signos = y + se cambian a guiones bajos.
    • El caso no es importante; Los caracteres en 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 , el subprograma del símbolo del sistema ( cmd.exe ) acepta nombres de archivos largos con caracteres comodín (signo de interrogación ?y asterisco *); Los nombres de archivos largos con espacios deben tener caracteres de escape (es decir, entre comillas simples o dobles). [13]

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 del archivo y en cada subdirectorio en la ruta del archivo y al sustituir silenciosamente la primera entrada del directorio coincidente (por ejemplo, cambiará el directorio actual a ).C:\>CD \prog*\inter*C:\Program Files\Internet Explorer\

Ver también

Referencias

  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. ^ ab "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 archivos 8.3 a partir de nombres de archivos largos". Microsoft.
  6. ^ Galvin, Thomas (9 de junio de 2015). "Una historia de dos nombres de archivos". tomgalvin.uk . Archivado desde el original el 25 de agosto de 2023 . Consultado el 17 de octubre de 2022 .
  7. ^ "Resumen breve de Microsoft".
  8. ^ "En cmd.exe, ¿cómo se puede evitar que" del *.tmp "borre archivos *.tmpl?". superusuario .
  9. ^ "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 .
  10. ^ "mount(8): montar sistema de archivos - página de manual de Linux".
  11. ^ "DOSLFN".
  12. ^ Andries Brouwer (26 de diciembre de 2007). "Entrada de directorio". El sistema de archivos FAT . Consultado el 30 de julio de 2013 .
  13. ^ "Uso de nombres de archivos largos". 11 de septiembre de 2008.