Windows 95长文件名详解

Author: 除晓天 Date: 1997-01-01

  在安装了Windows 95的计算机中,使用一些以前的DOS版本的磁盘工具和备份工具时,会出现一些意想不到的问题,甚至会破坏系统的文件分配表。这是为什么呢?
  大家知道DOS的文件系统使用的是“8.3”的文件名命名规则,即文件名由1至8个字符组成,扩展名由0至3个字符组合。而Windows 95的文件系统是支持长文件名(Long Filename Support)的。在Windows 95中文件名最长可达到256个字符。在生成一个长文件名的同时,系统自动指定(assigned)一个“8.3”的文件名。
  下面是长文件名转换成“8.3”文件名的规则:
  1删去如下的特殊字符
  \ :* ? “  <  > |
  2保留长文件名的前6个字符,然后加一个“~”再跟一个数字(从1~9)。如果同一个目录中有超过9个前6个字符相同且后缀前三位相同的长文件名,则保留长文件名的前5个字符然后加一个“~”再跟两个数字(从01~99)。以此类推。
  3对于扩展名,则使用长文件名的前3个字符。如果长文件名没有扩展名则不生成扩展名。当然一些应用程序会自动生成扩展名。
  另外,长文件名不区分大小写(not case-sensitive),但是它保留大小写。“8.3”文件名也不区分大小写,不保留大小写。
  以下是一个长文件名转换成“8.3”文件名的例子(假设这些文件在同一个目录中)。
  Department Budget.June1993       DEPART~1.JUN
  Department Budget.July1993       DEPART~1.JUL
  Department budget.Augest.1993     DEPART~1.AUG
  Department Organization.Fiscal Year 1993.June:DEPART~2.JUN
  Department Assets List as of June.1993 :DEPART~1.199
  Department Employee Assets June.1993:DEPART~2.199
  Department Assets List as of July.1993:DEPART~3.199
  Department Assets List as of August.1993:DEPART~4.199
  如果使用一个DOS版的程序(MS-DOS 6.22或更早的版本,DR-DOS,或者其它不支持长文件名的程序)去改名,则长文件名就会丢失。除非使用的是一个支持长文件名的程序。
  例如:如果你用rename去将DEPART~1.JUN改名成DEPTBDGT.JUN。那么在列目录时你只能看到一个“8.3”的文件名(DEPTBDGT.JUN),却看不到Department Budget.june 1993了。
  如果你用带通配符的命令去查看目录的话,会得到一些奇怪的结果。这个通配符不但匹配“8.3”文件名也匹配了长文件名。例如:对于如下4个文件,一个“dir *jun*”命令将会显示所有的文件:
  deptbdgt.jun:DEPTBDGT.JUN
  Departmental Organization.Fiscal Year 1993.June:DEPART~2.JUN
  Department Assets List as of June.1993:DEPART~1.199
  Department Employee Assets.June.1993:DEPART~2.199
  对于同样四个文件键入命令“dir *.jun”将会显示如下结果:
  deptbdgt.jun:DEPTBDGT.JUN
  Departmental Organization.Fiscal Year 1993.June:DEPART~2.JUN
  如果你键入命令“dir *.jun*”则显示:
  deptbdgt.jun:DEPTBDGT.JUN
  Departmental Organization.Fiscal Year 1993.June:DEPART~2.JUN                  
  Department Employee Assets.June.1993:DEPART~2.199
  因此,如果一个文件名是按“8.3”规则命名的,它的长文件名就和它的“8.3”文件名一样;如果一个文件名是按长文件名命名的,那就会按如上的规则生成一个“8.3”文件名。这样这个文件就有了不同的“8.3”文件名和长文件名。
#3  注:以上显示信息":"前为长文件名,后为8.3文件名。
#3  建立一个长文件名的最简单的方法是:
  在MS-DOS的命令行键入:
  1.CD\
  2.MD \LONGNAME
  3.CD\LONGNAME
  4.DIR>“I want create a longnames file.Jan.1997”
  这样就建立了一个名为“I want create a longnames file.Jan.1997”的长文件名文件。当然系统会自动给它起一个名为“IWANT~1,199”的“8.3”文件名。
  下面我们来看看为什么一些DOS版本的工具在装有Windows 95的系统中运行时会出错:Windows 95的长文件名在FAT表中使用了DOS文件分配表的保留字节(Previously reserved),而有些第三方的DOS工具,也需要使用这些保留字节。当它发现长文件名的信息占据了这些字节时,就可能运行失败或者覆盖FAT表中的这些字节上的内容。从而破坏了长文件名。这就是所谓的不支持Windows 95的长文件名。如果你使用的是一个不支持长文件名的备份工具,你又想保留长文件名的话,在Windows 95的安装盘中有一个名为LFNBK.EXE的文件可以帮你的忙。这个程序在备份时将长文件名的扩展部分保存到一个文件中,在恢复时又会将保存的信息恢复到FAT表,重新组成长文件名。