在很久之前,大概是Win3.x的时候,Windows中的文件名是由不超过8个字符的主文件名,和不超过3个字符的扩展名组成。到了Windows 95的时候,这个长度被扩展成主文件名+扩展名不超过255个字符。为了保证兼容性,Windows提供了一种转换的方式,大意是用'~'和数字还缩短文件名的长度,比如"C:\Program Files"被转换成了"C:\Progra`1"。这种转换使得一些老的应用程序在新的Windows平台上也可以使用,但它多多少少降低了系统的性能(文件索引之类)。

想知道自己的系统有没有开启这个功能,可以通过以下命令查询:

fsutil 8dot3name query c:

"c:"表示查询C盘的状态。如果功能被启用,会显示类似如下的信息:

Disable8dot3 的卷状态为 0 (8dot3 名称创建已启用)。
NtfsDisable8dot3NameCreation 的注册表状态为默认值 2 (卷级别设置)。
基于以上的两个设置,在 c: 上启用 8dot3 名称创建。

如果在C盘上关闭这个功能,则可使用以下命令:

fsutil 8dot3name set C: 1

1表示禁用,0表示启用。如果不写盘符,则是全局设置,这时可选的有4个值:0(全部启动),1(全部禁用),2(每个盘符单独设置),3(除系统盘外全部禁用)。全局设置也可以通过注册实现:

键:HKLM\SYSTEM\CurrentControlSet\Control\FileSystem

值:NTFSDisable8dot3NameCreation 类型:REG_DWORD

可选的值就是上述的4个之一,在Windows 7(或者Windows Server 2008 R2)中的默认值是2。