让我们先回到DOS 1.0那会
DOS 1.0操作系统不支持子目录、小写文件名或长于8.3的文件名。当cxdgz试图执行汇编程序(或者编译器,如果你够时髦的话)时,实际上会出现以下交互对话:
A asm foo //。asm文件后缀将隐式添加到foo文件名之后。
汇编程序版本XXX
源文件: FOO。空对地导弹
列表文件[FOO。LST]: //直接点击回车接受默认设置。
对象[foo . obj]://直接点击回车接受默认设置。
您只需要输入文件的基本名称(这里是foo),LST和OBJ文件后缀将自动添加到文件名中。实际上,我认为您也不能禁用扩展,因为它们总是被添加的。
但是如果你不想生成LST文件呢?汇编程序肯定会要求输入文件名。如果不输入任何文件名,汇编程序将创建一个与源文件同名的LST文件。
这个时候,黑魔法要来了
假设您想将LST文件直接发送到打印机,但不想在软盘中创建此文件,因为软盘可能没有足够的空间,或者您不想花时间创建最终将被删除的文件。因此,您输入了“PRN”作为文件名。
此时,汇编程序并不知道“神奇”的文件名。因此,它将尝试创建文件“PRN。LST”并试图在其中写些什么。装配工就像被蒙在鼓里。它认为它想把数据写入文件。事实上,它想写的东西已经直接发送到打印机了。
如果你想完全忽略输出,你可以输入“NUL”,你当然知道怎么做。
如果你想把内容输出到屏幕上,你可以明智地输入“con”。
如果你仔细阅读这篇文章,你应该明白上面的故事已经解释了以下两件事:
00-1010回答:如果添加文件后缀使法术无效,那么当汇编程序将LST添加到文件名中时,法术就不能正常工作,这违背了法术创建的初衷。
00-1010回答:因为在DOS 1.0操作系统中,没有子目录。系统中只有一个目录,就像我们今天说的,应该叫“根目录”,但是当时因为系统中没有子目录,人们就不给它取一个合适的名字。人们只是这样说:磁盘上的文件,而不是某个目录中的文件。如果子目录中不存在魔法文件,那么在cxdgz尝试使用CHDIR命令进入子目录后,你会发现“NUL”的输入已经不起作用了,只是对你来说:这个应该有一些魔法吧?
但是,这么长时间过去了,为什么我们还支持这些神奇的文件名呢?
因为即使是现在,仍然有一部分人依赖这种工作机制。只需打开一个批处理脚本,我们就可以看到类似于NUL或“如果存在directoryname \ nul”的文字。此外,所有文件都会有这样一句话:请使用“复制CON …”来创建文件。