为什么在 Windows 7 中不能将文件夹命名为“._.”?

为什么在 Windows 7 中不能将文件夹命名为“._.”?

我刚刚注意到无法命名文件夹._.- 而是将其命名._。有时,它在命名后消失,但刷新视图后会重新出现。Windows 似乎对文件名末尾的点有问题 - 这是为什么?

答案1

Windows 通常要求文件没有扩展名,或者扩展名至少有一个字符长;零长度的扩展名(即以 结尾的文件名)不太好.。文件夹也可以有扩展名,因此,Windows 不允许它们的名称以 结尾.。来源,来自DavidPostill 链接的文章

使用句点将基本文件名与扩展名分隔开目录或文件

(重点是我的。)如果您尝试以句点结尾文件或目录,Windows 只会假定您不想要扩展名并因此删除它,即使您在md命令提示符中创建它。

危险区!如果您迫切希望文件夹名称以 结尾.,则需要使用 的神奇原始名称覆盖序列\\?\。在命令提示符中,md \\?\C:\path\to\container\._.确实会创建一个名为 的文件夹._.,但许多程序都会遇到问题,甚至是 Explorer:

。_。 问题

此类目录只能用rd\\?\名称删除,或用其短(8.3,dir /x)名称重命名。

答案2

Windows 似乎对文件名末尾的点有问题?这是为什么?

不要以空格或句点结尾文件或目录名称。尽管底层文件系统可能支持此类名称,但 Windows shell 和用户界面不支持。

下面的源链接详细介绍了命名规则。

来源命名文件、路径和命名空间

答案3

这不是一个错误。这是设计用来防止兼容性问题的。
这是旧 DOS 时代的遗留问题。

FAT12(软盘)和 FAT16 文件系统(Windows 95 引入长文件名支持之前的 FAT16)仅将文件名存储在 11 个字节中:
8 个字节用于名称,3 个字节用于扩展名。名称和扩展名之间的“句点”甚至没有存储。它是隐含的,并自动添加以用于显示目的。
目录根本没有扩展名。相反,扩展名的 3 个字节填充了“$”字符(这在真实名称中是非法的)。
因为 Windows 仍然与此兼容,所以 Explorer 和 Windows 的许多其他组件会默默地使尾随句点消失,以防止产生兼容性问题。
正如其他人所说,您实际上可以使用 RAW 语义(绝对路径名之前的 \\?\ 前缀)来处理此类文件夹。
在后台,NTFS 和网络文件系统对此类文件和文件夹没有任何问题。这只是 Explorer 试图阻止用户创建可能给其他软件带来问题的东西的情况。

(实际上还有一些其他遗留问题:
文件名如 COM、COM1、COM2、AUX、PRN、LPT、LPT1、LPT2、LPT3、CON 可能会导致类似的问题,即 Explorer 和许多其他 Windows 部分都会混淆,因为这些名称是“保留”名称,也可以追溯到 DOS 时代。)

答案4

这里的问题是 Windows (DOS) 允许在 FAT 文件系统上使用 8.3 文件名。意思是,8 个字符,后跟一个 . ,再跟三个字符。Unix 和 Linux 允许使用除 / 和 \0 之外的任何字符。 \0 是 C 字符串终止符,而 / 是目录分隔符。其他任何字符都可以使用。

Windows 95 通过维护一个将短文件名 (8.3) 转换为长文件名 (LFN) 元数据的数据库解决了这个问题。如果您删除了 Windows 95 操作系统文件,则下次安装 Windows 95 时,磁盘上会留下一些名称奇怪的文件。例如,“我的文档”在磁盘上可能被命名为 MYDOCU~1。显然,如果您丢失了元数据,您将无法轻松地转换这些元数据。

该 shell 必须应对自 MS-DOS 时代以来存在的许多历史增量。

希望这可以帮助

相关内容