为什么文件路径 Program Files 可以写成 Progra~1

文章介绍了Windows操作系统中8.3格式文件命名规范的由来,这种格式源于DOS时代的限制,允许文件名主体8个字符,扩展名3个字符。在Windows中,长文件名会有一个对应的8.3短路径名称,如ProgramFiles对应Progra~1,以保持与旧系统的兼容性。短名称在某些场景下,如命令行或批处理文件中仍然有用。
摘要由CSDN通过智能技术生成

前言

  有很多同学可能不理解为什么文件路径 Program Files可以写成 Progra~1,那这里首先要了解一下文件名规范。

  文件路径中的 Progra~1 实际上是 Progra m Files 的缩写形式。这是由于 Windows 操作系统中的文件系统使用了 DOS 命名约定,DOS 命名约定限制文件名的长度为 8 个字符,文件扩展名长度为 3 个字符,因此需要使用缩写来代替较长的文件名和目录名。

  在 Windows 中,每个文件或目录都有一个短名称和一个长名称,其中短名称是缩写形式,而长名称是完整的文件名或目录名。在文件路径中使用短名称可以帮助缩短文件路径长度,提高文件操作的效率和速度。

  因此,Progra~1 实际上是 Program Files 的短路径名称,可以在命令行、批处理文件或代码中使用。需要注意的是,不是所有的文件或目录都有短名称,有些文件或目录只有长名称,所以需要根据实际情况进行选择。

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~1program files 的可选文件名,那么我如何来知道别的文件名的这种表示呢?

在dos年代,文件只是8个字符的长度,但是到了Windows的年代,为了和dos的兼容行,在超过了8个字符的文件名就只取前面的6个在最后两位加~1.
所以 document and settings 就变成 docume~1了!!

具体详见:
Window高级编程指南的第14章

转载自:https://blog.csdn.net/u014727709/article/details/131196304
欢迎start,欢迎评论,欢迎指正

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想你依然心痛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值