Windows10仍然不允许您使用1974年保留的这些文件名

Windows“保留”某些文件名,不允许您在任何地方使用它们。忘记将文件称为“con.txt”或“aux.mp3”。这一切都是因为1974年做出的选择,以及微软对永恒向后兼容性的渴求。

不能使用的文件名

Microsoft提供了一个官方保留文件名列表,它们如下所示:

请注意,您不能将这些文件名与任何文件扩展名一起使用。因此您不能将文件命名为“con.txt”、“con.jpg”、“或”con.doc“。而且Windows不区分大小写,所以不管是CON、CON还是CON-Windows不会允许您使用该名称。

你可以自己试一试。尝试在记事本中将文件另存为“con.txt”或“lpt6.txt”。或者尝试在文件资源管理器中将任何文件重命名为这些名称之一。Windows就是不让你这么做。

当然,Windows还通过其他方式限制文件名。您也不能在名称中使用如下所示的各种特殊字符。有关更多信息,请参考微软的官方版本文档。

1974年发生了什么,我们为什么要关心?

正如@foone最近在推特上解释的那样,这个问题可以追溯到1974年。在UNIX中,“一切都是一个文件”。(今天的Linux等类UNIX操作系统也是如此。)。硬件设备以特殊路径表示,如第一台打印机的/dev/lp0和控制台的/dev/tty。

1974年,同样的概念被添加到CP/M操作系统中。不幸的是,CP/M是为内存非常少且没有硬盘的计算机设计的。它使用多个磁盘,没有目录,所以那些代表设备的特殊文件有效地出现在每个磁盘上的任何地方。

因此,当您保存文本文件时,您可以告诉文本编辑器将其“保存”到打印机设备,打印机设备将打印该文件。但是文本编辑器和其他程序喜欢添加像“.txt”这样的文件扩展名,所以CP/M只是忽略了这些设备文件的文件扩展名。换句话说,如果文本编辑器尝试将文件保存到打印机设备的名称,后跟“.txt”,CP/M就会假定它指的是打印机设备,而忽略文件扩展名。现在,该功能在每个应用程序中都能正常工作-太棒了!

当然,这是个肮脏的黑客行为,但谁在乎呢?嗯,CP/M流行起来了。最终PC-DOS出现了,它保留了有用的CP/M功能。早在1983年,PC-DOS 2.0就增加了目录,但微软选择让这些设备文件出现在所有目录中,以便与现有的DOS软件兼容,而不是将它们放在一个特殊的设备文件夹中。

最终,Windows95问世了,它是建立在DOS之上的。Windows NT不是基于DOS之上的,但它确实希望向后兼容Windows95应用程序。Windows10仍然基于Windows NT,其工作方式也是一样的。当然,这同样适用于Windows7。

现在,四十多年过去了,我们仍然不能将文件命名为“con.txt”或“aux.mp3”,因为Windows希望与可能使用此功能的古老程序保持兼容。这是微软致力于向后兼容的一个很好的例子。

相关文章