有多少人还记得当年在MS-DOS下是怎么安装和启动程序或游戏的?不像现在,在电脑或手机上用鼠标或手指一点就可以了。
那时候操作很麻烦的,基本上都是这样启动程序的:电脑启动后,等命令行的光标在那闪的时候就可以输命令了,先输盘符A:或者C:回车进到某个盘里,再DIR/W看看盘里有什么文件夹和文件,找到要找的文件夹就CD文件夹名进去,再DIR一番,找到要启动的文件了(这种文件是看这些文件),就直接输文件名(或者带后缀),回车,就启动程序了。
但是找到这些可执行文件并不是那么容易。很多软件安装目录里都包含多个可执行文件,有BAT后缀的,还有COM后缀的,还有EXE后缀的,到底是哪一个。最稳妥的办法是查看README.TXT文件,或者靠经验操作。
一般情况下它是一个BAT文件,这是因为BAT文件只是一组存放在文本文件中的DOS命令,或者说是一个DOS脚本。在BAT批处理文件里我们可以写代码实现按一定的顺序进行相应的设置或者运行相应的实际可执行文件,这能让我们在DOS下省不少事。那么实际的可执行文件又是哪个?在DOS时代比较常用的就是COM和EXE文件。
COM是COMMAND(命令)的简称,是原始程序文件,是一个继承自Digital Research的CP/M操作系统,它实际上是86-DOS开始的基础。微软从西雅图计算机产品公司购买86-DOS,对其做了不少的改进,但COM文件的基础保持不变。COM文件不仅仅是一种特定的格式,它实际上只是一个内存映像。 DOS系统只需读取文件内容,将其插入固定地址的内存中,然后运行16位机器代码。这个基本方法意味着文件大小限制为64KB,这对于在CP/M下运行的80年代早期的大多数程序来说都很好,但是由于IBM-PC兼容机提供了额外的内存,因此要求超出了这个限制。
于是又出现了一种新格式的可执行文件,这就是我们最熟悉的EXE文件,它弥补了COM文件的不足。最初这些可执行文件基于MZ格式(在Microsoft编码器 Mark Zbikowski之后)。在它的最基本级别,这意味着EXE文件的标题以字母MZ开头,但也定义了文件的结构。可执行文件允许更大的程序,特别是当DOS扩展程序投入使用时,也为WINDOWS甚至OS / 2奠定了使用类似结构的基础,所有这些都捆绑在EXE扩展名下。这个新的可执行文件也在MS-DOS 4下运行,其中隐藏了NE(代表New Executable)的ASCII标识符,以及位图图形等资源,所有这些都包含在一个不错的包中(玩破解的小伙伴们都比较熟悉)。当然,即使在今天,我们仍然在Windows中使用它的衍生物。这里我们也看出COM和EXE文件之间的界限模糊。像Edit.com甚至Command.com这样的DOS实用程序的大小正在增加,因此需要新的规则来允许它们的大小超过64KB。在程序加载器中增加灵活性意味着COM和EXE文件可以互改后缀,但仍可正常运行。
这里还有一点需要说明一下,在MS-DOS系统中,这三种可执行文件格式的优先级是按这个顺序排的:COM>EXE>BAT。意思就是,我们在命令行中输入文件名,不带后缀的话,会执行COM文件,如果没有COM文件,就会执行EXE文件,最后才是BAT。如果有同名不同后缀的文件,直接输文件名不带后缀就容易出错。遇到这种情况,运行程序带后缀就可以了。