stringtranslate.com

8.3 nombre de archivo

Un nombre de archivo 8.3 (también llamado nombre de archivo corto o SFN ) es aquel que obedece a la convención de nombres de archivo utilizada por las versiones antiguas de DOS y las 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 un nombre de archivo alternativo al nombre de archivo largo, para proporcionar compatibilidad con programas heredados. La convención de nombres de archivo está limitada por el sistema de archivos FAT. También han existido esquemas de nombres de archivo 8.3 similares en los sistemas operativos de minicomputadoras CP/M, TRS-80, Atari y algunos 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 sistemas que sólo admiten nombres de archivo 8.3, los caracteres sobrantes se ignoran. 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 archivo y directorio 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 hace CamelCap.tpuque sean equivalentes 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 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 archivo internamente para preservar las mayúsculas y minúsculas y evitar truncar letras en los nombres, por ejemplo en el caso de VFAT .

Nombres de archivos VFAT y 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 Unicode (LFN) 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 software del sistema 8.3 antiguo solo reconocerá uno como la entrada de directorio válida).

Para mantener la compatibilidad con las aplicaciones antiguas (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 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 está en mayúsculas en 8,3, no se almacenará ningún LFN en el disco.
    • Ejemplo:TEXTFILE.TXT
  2. Si el LFN es 8.3 con mayúsculas y minúsculas, el LFN almacenará el nombre con 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 estaba permitido por la convención, aunque no por las API) o alguna de sus partes 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 por el 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 , seguidas de una tilde , seguida de un solo dígito , seguido de un punto ., seguido de los primeros 3 caracteres de la extensión.
    • Ejemplo: TextFile.Mine.txtse convierte en TEXTFI~1.TXT(o TEXTFI~2.TXT, TEXTFI~1.TXTya debería existir). ver +1.2.textse convierte en VER_12~1.TEX. se .bashrc.swpconvierte 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 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 ., seguido 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 5 letras, seguidas de una tilde, seguidas de dos dígitos a partir de 10, seguido de un punto .y los primeros 3 caracteres de la extensión.
    • Ejemplo: TextFile.Mine.txtse convierte TEXTF~10.TXTsi ya TEXTFI~1.TXTexiste TEXTFI~9.TXTtodo.

Durante el caso antimonopolio de Microsoft de 2001 , los nombres MICROS~1 y MICROS~2 se usaron con humor 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 aún están disponibles para aplicaciones heredadas. Se sabe que Windows NTVDM utiliza nombres 8.3. Esto se puede desactivar opcionalmente en todo el sistema para mejorar el rendimiento en situaciones en las que existen grandes cantidades de archivos con nombres similares en la misma carpeta. [1] La creación de nombres de archivo 8.3 se puede desactivar en todo el sistema y/o por volumen, y los nombres de archivo 8.3 existentes se pueden eliminar utilizando fsutilo una clave de Registro. [7]

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 los 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 .

En los sistemas de archivos VFAT y NTFS , los nombres de archivo 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 un estándar para intercambiar información, como las tarjetas flash compactas que se utilizan en las cámaras. Los nombres de archivo largos VFAT LFN introducidos por Windows 95/98/ME mantuvieron la compatibilidad. Pero el VFAT LFN utilizado en los sistemas basados ​​en NT (Windows NT/2K/XP) utiliza un nombre corto 8.3 modificado.

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 de 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 alteración de nombres de archivo 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 nombre de archivo sin distinción entre 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 se utiliza esta función al escribir. [9] Para MS-DOS puede utilizar DOSLFN de Henrik Haftmann. [10]

Tabla de directorios

Una tabla de directorios es un tipo especial de archivo que representa un directorio. Cada archivo o directorio almacenado en ella se representa mediante 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, por último, el tamaño del archivo/directorio.

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

Esto excluye los siguientes caracteres ASCII :

Los nombres de archivo DOS están en el conjunto de caracteres OEM . El código 0xE5 como primer byte (ver a continuación) genera problemas cuando se utilizan caracteres ASCII adicionales .

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

Cómo trabajar con nombres de archivo cortos en un símbolo del sistema

A veces puede ser conveniente convertir un nombre de archivo largo en uno corto, por ejemplo, cuando se trabaja con el símbolo del sistema. Se pueden seguir algunas reglas simples para obtener el nombre de archivo correcto en 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, luego una tilde ~como séptimo carácter y un número (normalmente 1) como octavo. El número lo distingue de otros archivos que tienen las mismas primeras seis 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 o directorio, solo se usa el último. Los puntos anteriores deben ignorarse. Si hay más de tres caracteres después del punto final, solo se usan los primeros tres.
  3. Generalmente:
    • Cualquier espacio en los nombres de archivo debe ignorarse al convertir a SFN.
    • Ignore todos los puntos excepto el último. No incluya ningún otro punto, como tampoco los espacios. Utilice el último punto, si lo hubiera, y los siguientes caracteres (hasta 3). Por ejemplo, para .manifest, solo se utilizaría .man.
    • Las comas, corchetes, punto y coma, signos = y signos + se cambian por guiones bajos.
    • Las mayúsculas y minúsculas no son importantes; 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 de un directorio

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

o: dir /-nmuestra sólo 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 archivo largos con caracteres comodín (signo de interrogación ?y asterisco *); los nombres de archivo largos con espacios en ellos deben ser escapados (es decir, encerrados entre comillas simples o dobles). [12]

A partir de Windows Vista , los comandos de consola y los subprogramas de PowerShell realizan una coincidencia de patrones limitada al permitir caracteres comodín en el nombre de archivo y en cada subdirectorio de la ruta del archivo y sustituir 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. ^ ab "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 desde el 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 genera Windows 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 desde el original el 2023-08-25 . Consultado el 17 de octubre de 2022 .
  6. ^ "Resumen de una línea de Microsoft".
  7. ^ "En cmd.exe, ¿cómo se puede evitar que "del *.tmp" elimine archivos *.tmpl?". ​​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 el sistema de archivos – Página del manual de Linux".
  10. ^ "DOSLFN".
  11. ^ Andries Brouwer (26 de diciembre de 2007). "Entrada de directorio". El sistema de archivos FAT . Consultado el 30 de julio de 2013 .
  12. ^ "Uso de nombres de archivo largos". 11 de septiembre de 2008.