有很多同学可能不理解为什么文件路径 Program Files
可以写成 Progra~1
,那这里首先要了解一下文件名规范:
8.3格式
8.3格式通常指较旧的Windows操作系统或DOS的文件命名格式。
“8”是指文件名或目录名的主体部分小于等于8个字节;
“3”是指文件名的扩展名部分小于等于3个字节;
8.3文件名的有效字符不包括空格等特殊字符;
若不符合以上限制则会以"~“作延长名称如"Program Files"会变成"Progra~1”
若同一文件夹有相似的名称,末端的数值则会自动递增
8.3短文件名格式规范是DOS+FAT12/FAT16时代遗留下的老规矩,自从Windows95开始(其实据说从Windows for Groups 3.11开始),Windows就已经能支持长文件名,但是为了向前兼容,特别是文件系统兼容性,FAT文件系统均强制执行“为长文件名提供8.3兼容格式的短文件名”的特性。
因此你会看到,在FAT16/32文件系统上:
目录"program files"同时还拥有一个8.3规范的"PROGRA~1"短名称;
而文件"元素周期表.exe"也同时拥有一个"元素周~1.exe"的短名称。这有一点像类UNIX系统下的hardlink,一个对象拥有两个引用方式。
如:
vbs中 同一语句使用长名如下: WshShell.Run """D:\Program Files\Notepad++\notepad++.exe """&name,1, false 使用8.3命名规则如下: WshShell.Run "D:\Progra~1\Notepad++\notepad++.exe """&name,1, false
c:\progra~1 这种目录是在纯DOS下看到的,纯DOS使用8.3文件格式。
8.3格式文件命名规范
8.3格式介绍:文件名规范:8.3格式
文件夹(sub-directry)名称,以前是不允许带空白的,后来允许带空白,但由于有了空白,许多命令出现二义性,于是采用双引号括起来的办法。
例如:
以前想要访问:Documents and Settings,用 cd Documents and Settings 是行不通的,得采用双引号的方式:
cd " Documents and Settings "
但用到set PATH时很麻烦,名字太长,双引号时常括错。于是采用8个字符缩写,即:写前六个有效字母(不计空格字符),另加波浪号和1,重名的就 ~ 2、~3,如此组成8位数。后来,这种方法成了规定。例如:
PROGRA~1 # 表示 Program Files PROGRA~2 # 表示 Program Files (x86) DOCUME~1 # 表示 "Documents and Settings" LOCALS~1 # 表示 "Local Settings" C:\progra~1 # 表示 "C:\program files"
注意略去空白,用了第二个词的字母,凑成六个,再加波浪号和1。
所以窗口下的 C:\program files 文件夹进入纯DOS看到的是 C:\progra~1,这个被延续到WINDOWS中,也是因为地址太长才写成这样的。因为只能输入255个字符所以才写成这样。
% 这种有百分号的是电脑的相对地址写法。原来也是在DOS中使用的,现在在WINDOWS中一般没有任何使用的必要,只有在书中才使用,一般只是表示系统文件夹的。
%号表明环境变量要寻找的地址。
progra~1是program files 的可选文件名,那么我如何来知道别的文件名的这种表示呢?
在dos年代,文件只是8个字符的长度,但是到了Windows的年代,为了和dos的兼容行,在超过了8个字符的文件名就只取前面的6个在最后两位加~1.
所以 document and settings 就变成 docume~1了!!
具体详见:
Window高级编程指南的第14章