@
Ocean810975 #18 应该也不是很早期,因为 8.3 格式的名字里不能有空格。
@
ulosggs #20 这个理解比较片面。首先,分区的文件系统可以选择不支持短文件名,也可以通过注册表关闭短文件名的生成。如果一个名字已经符合 8.3 的要求,就只会转换为大写作为短文件名。另外短文件名和创建顺序有关,第一个以 PROGRA 开头的无扩展名长文件名在 Windows 的常见实现里会得到 PROGRA~1 这个短文件名,第二个则是 PROGRA~2 ,更更多的情况还有更复杂的命名方法( Windows 上的常见实现大概会有四位 hex 之类的),还有在短文件名已经生成后建立长文件名等于已经存在的短文件名的情况。PROGRA~1 只能表示某个特定的文件,不能表示所有以 Progra 开头的长文件名文件。
最后,使用 PROGRA~1 表示 Program Files 的程序不应该被理解为“不想处理空格”,这实在是太美化它们了,更好的理解是
自从 Windows 3.3 以来就没更新过的程序,或者
写得很糟糕的程序,或者
忘了声明自己是 Windows 95 之后开发的程序
在现代文件系统里存储短文件名只是为了兼容上个世纪的程序,不是允许新程序逃避现实。