DOS基础

一、对扩展内有的三种使用方式

第一种方式,可称为原始方式,早期设汁的一些使用扩展内存的软件如SUPPER CCDOS5。21以下版本就是这样使用的(金山汉字启动时会自动把汉字库调入道扩展内存中)所谓原始方式,也可叫“野蛮”使用方法,因为这种方式中,各软件都有自己的一套使用扩展内存方法,相互不通气也互不兼容,结果造成任何时候都只能有一个软件使用扩展内存,否则就会出现一个程序把另一个程序在扩展内存中冲掉这种相互“打架”现象。我们可把这种没有统一规范以“野蛮”方式使用的扩展内存称为“无类型的内存”或叫“野的内存”。

1984年以后,针对这种现象,解决对扩展内存使用方法的混乱局面,国际计算机际行业相继推出了两个使用扩展内存的的规范,这分别是XMS规范和EMS规范。这两个规范是各软件使用扩展内存的共同遵循的标准,统一和规范了对扩展内存访问的方法。各应用程序使用扩展内存时都要遵循这两个规范的规定来访问扩展内存,应用程序不再象以前那样直接对扩展内存进行存取,而是通过XMS或EMS规范实现对扩展内存的访问,由XMS或EMS规范管理和调度各应用程序对扩展内存的访问,这就可根本上避免以“野蛮”方式访问扩展内存时所可能导致的那种相互打架现象。在XMS和EMS两种规范中,调XMS规范是一个更先进的观范,目前新设计的绝大部分使用扩展内存的软件如WINDOWS、OFFICE等基本上遵循XMS规范(使用EMS规范访问扩展内存的软件目前已很少)。

我们把通过把XMS规范访问的扩展内存称为“XMS类型的内存”或简称XMS内存,把通过EMS规范访问的扩展内存称为“EMS类型的内存”或简称EMS内存。这两种规范使用扩展内存的方式是不一样的。

XMS是通过将扩展内存中的数据交换到常规内存中的方式使用扩展内存的,用户程序依然到常规内存中存取数据,再由XMS规范的驱动程序HIMEM.SYS负责将其转换为对扩展内存的访问。

EMS是通过将扩展内存中的数据交换到上位内序中的空闲地址处。即上位内存块(UMB)中的方式使用扩展内存的,经过专门设计的用户程序转到UMB中存取数据,再由EMS规范的驱动程序EMM386.EXE负责将其转换力对扩展内存的访问。由于EMS内存是通过将扩展内存映射到UMB中,这相当于在上位内存中开出的一页窗,用户程序通过这个窗口一页一页地使用扩展内存,所以人们也把EMS内存叫扩页内存。

以上两种使用扩展内存的方式可如下所示:

  HIMEM.SYS

用户程序←一一…一一→常规内存→…一……一→扩展内存

  (XMS规范)

 

  EMM386.EXE

用户程序←一一…一一→上位内存块→…一……一→扩展内存

  (EMS规范)

二、设备驱动程序HIMEM.SYS的作用

用法:DEVICE=[盘符][路径]HIMEM.SYS

HIMEM.SYS的作用有二:

一是将1M之外无类型的扩展内存转换为符合XMS规范的内存,即开辟XMS内存,以供那些需要使用XMS内存的程序所使用。

二是从XMS内存中划出第一个64K内存块,即从XMS内存中开辟出高内存区HMA,以便以后DOS=HIGH命令能把DOS部分内核从常驻区中已到HMA中,以节省更多的常规内存供用户程序所使用。

由于以后要运行的很多软件都要使用由HIMEM.SYS所开辟出的XMS内存,显然HIMEM.SYS应先于所有使用XMS内存的程序运行。

另外,HMA也是HIMEM.SYS 开辟出来的,所以只有在运行HIMEM.SYS 才可能实现DOS=HIGH的功能。

三、DOS=HIGH命令的作用

DOS=HIGH命令的功能就是把DOS部分内核从以DOS常驻区中移到HMA中,以节省出更多的常规内存供用户程序所使用。

在DOS 6.22中只有DOS内核能被移到HMA中,设备驱动程序和常驻程序部只能被移至UMB中。

因为HMA是由HIMEM.SYS所开辟出来的,所以若仅运行DOS=HIGH,则只要HIMEM.SYS的支持就够了,不需要运行EMM386.EXE。

四。设备驱动程序EMM386.EXE的作用及其重要参数的含义

用法:DEVICE =[盘符][路径]EMM386.EXE[NOEMS][RAM]

1.EMM386.EXE的作用

EMM386.EXE的作用也有二:

一是从HIMEM.SYS开辟出的XMS内存中划出一部分转换为符合EMS规范的内存,映射到位于上位内存区中的EMS页框(EMS窗口)中,即开辟出EMS内存,或叫作XMS内存来模拟EMS内存,以供那些需要使用EMS内存的老式程序所使用。

二是从HIMFM.SYS所开辟出的XMS内存中划出一部分,映射到上位内存块中,即开辟出上位内存块,以便以后DOS=UMB命令能使DOS把上位内存块也利用起来。

由此我们看到,EMS内存和UMB都是从调XMS中“借”过来的,而XMS又是由HIMEM。SYS开辟出来的,所以EMM386.EXE是靠HIMEM.SYS程序来支撑的。

由于UMB是由EMM386.EXE所开辟出来的,所以只有在运行了EMM386.EXE后。才可能实现DOS=UMB的功能。

2.EMM386.EXE的参数

运行EMM386.EXE时的参数很重要,主要运行参数如下:

(1)    若不带任何参数运行EMM386.EXE,则仅提供EMS内存,不提供UMB。

(2)    若带参数EOEMS运行EMM386.EXE,则仅提供UMB不提供EMS。

(3)    若带参数RAM运行EMM86。EXE,则既提供EMS内存,又提供UMB。

大部分考题都要求,在编写CONFIG.SYS文件时,要把一些程序调到UMB中,所以我们在书写EMM386.EXE命令时,后面一定要写上参数NOEMS或RAM,即应写成DEVICE=EMM386.EXE RAM 或DEVICE=EMM386.EXE NOEMS均可。很多学员只写成DEVICE=EMM386.EXF,后面什么参数也不写,这时UMB就出不来了,

用法举例:

【例1】DEVICE=C:/DOS/EMM386.EXE(只提供EMS内存)

【例2】DEVICE=C:/DOS/EMM386.EXE  NOEMS(只提供UMB)

【例3】DEVICE=C:/DOS/EMM386.EXE  RAM(同时提供EMS内存和UMB)

五、DOS=UMB命令的作用

DOS=UMB命令的功能是让DOS把由EMM3S6.EXE所开辟出的UMB与常规内存连接在一起,即让DOS把UMB也利用起来,这样以后才有可能用DEVICEHIGH或LOADHIGH命令把设备驱动程序或常驻程序由常规内存调入到UMB中,以节省出更多的常规内存供用户程序所使用。

因为UMB是由EMM386.EXE所开辟出来的,所以若要运行DOS=UMB就必须先运行EMM386.EXE。

另外,DOS=UMB只是通知DOS把UMB也利用起来,但并未把任何程序调入到UMB中,若要具体地将某一程序调入到UMB中,需要再运行DEVICEHIGH或LOADHIGH命令。

还有,若只写了EMM386.EXE,而没有写DOS=UMB,则EMM386.EXE所开辟出的UMB对DOS来讲并没有什么用处,此时DOS并不会使用UMB,当然也就更无法实现DEVICEHIGH或LOADHIGH命令了,所以一定别忘了DOS=UMB这一句。

通过以上分析可知DOS=HIGH与DOS=UMB这两条命令并没有什么必然联系,一个是有关HMA的,一个是有关UMB的,在CONFIG.SYS中也下一定要同时出现。

六、DEVICEHIGH与LOADHIGH命令的作用

当在CONFIG.SYS中写上DOS=UMB命令后,DOS便可将UMB也利用起来,我们可把一些程序存放到UMB中。但是并不是所有的程序部能放到UMB中。能放到UMB中的程序只有两类,一类是设备驱动程序,另一类是常驻程序。

1.用DEVICEHIGH=命令装载设备驱动程序

用法:DFVICEHIGH=[盘符[ [路径]设备驱动程序名

设备驱动程序是指那些用来驱动和管理硬件设备的程序,例如HIMEM.SYS便是一个用来驱动和管理扩展内存这种设备的程序,又如MOUSE.SYS是一个驱动鼠标器这种设备工作的程序。

设备驱动程序只能以“DEVICE=设备驱动程序名”的形式写在CONFIG.SYS中,设备驱动程序是在DOS启动时在执行以COMMAND.COM和AUTOEXEC.BAT前就已被执行并被永久地装入内存的。除个别外,绝大部分设备驱动程序都不能在DOS提示符下运行。绝大部分设备驱动程序的扩展名都是.SYS,只有eMM386.EXE等少量几个设备驱动程序例外。

如果用“DECIVE=”命令来装载设备驱动程序,那么设备驱动程序将被装入到常规内存中。若想把设备驱动程序装入到上位内存中,必须改用“DFVICFHICTH=”命令。实际上在DOS6.22中DEVICEHIGH命令已可完全替代DEVICE命令,所有写DEVICE的地方部可换成DEVICEHIGH,DOS若发现无法将该驱动程序装人到UMB中,会自动将其放到常规内存中,不会出错。尽管如此,我们还是建议学员在考试时对这两个命令根据情况区分使用。

2.用“LOADHIGH”命令运行常驻程序

用法:LOADHIGH [盘符] [路径]常驻程序名

或LH[盘符] [路径]常驻程序名

在DOS提示符下执行的程序,在其运行结束后,,通常便释放其所占据的所有内存空问,以供下一个要运行的程序所使用。但是有一类程序却不是这样,这类程序就是常驻程序。常驻程序也叫常驻内存程序、TSR程序或驻留程序,是指那些一旦执行便永久地占据内存(这些程序永远呆在内存里不出来)的程序。程序常驻内存后,就有机会随时发挥作用,监视和控制用户的工作。例如病毒就是典型的常驻程序,启动汉字操作系统时需运行的程序如SPIIB.COM、SPDOS.COM、PY.COM,鼠标管理程序MOUSE..COM等都是常驻程序。DOS6.22中的SMARTDRV.EXE、DOSKEY.COM、VSAFE.COM等也是常驻程序。

常驻程序都必须在DOS提示符下运行,不能写在CONFIG.SYS中。所以判断一个程序是设备驱动程序还是一个常驻程序的通常方法是:若其必须写在CONFIG.SYS中,则便是设备驱动程序;若只能在DOS提示符下运行便是一个常驻程序(当然能在DOS提示符下运行的并不都是常驻程序)。

如果运行常驻程序时没写LOADHIGH,如MOUSE,则该常驻程序便将驻留在常规内存中,若想将常驻程序调到UMB中,必须在命令的前面写上LOADHIGH(注意:LOADHIGH简写为LH),例如:LOADHIGHMOUSE.COM.则MOUSE.COM被放到UMB中。

要特别注意这两个命令的用法差别:设备驱动程序只能用“DEVICEHIGH=”命令,常驻       内存只能用“LOADHIGH”命令(或“LH”命令),并且DEVICEHIGH前面必须写上等号,而LOADHIGH 后面绝不可写等号,用一个空格与常驻程序名隔开就可以。

七、磁盘高速缓冲程序SMARTDRV.EXE的作用与用法

DOS6..22中有一个非常有用的常驻程序SMARTDRV.EXE,使用它可以大大加快磁盘的读写速度。其工作原理如下:

由于相对于内存而言,磁盘(包括硬盘)的读写速度要慢多了。为此SMARTDRV.EXE从XMS内存中外辟出一块区域(称之为高速缓冲区)作为主机与磁盘之间的一块中间区域,用来暂时存放上次从磁盘上读取的数据。这样,下次读取磁盘时,SMARTDRV.EXE首人查找一下要读取的数据在这块缓冲区中是否能找到,若能找到就没有必要再读取磁盘,就可直接把数据从缓冲区中取回了,这样可大大节省读取磁盘的时间。当然若在缓冲区中找不到,那就没办法了,还得读磁盘去。所以这就有个在缓冲区中是否能找到,即命中率的概念,显然重复读取的数据命中率就比较高。类似地,SMARTDRV.EXE对写磁盘也能进行高速缓存。当写磁盘时,主机只要把数据写到缓冲区中就可马上返回做其它事情,待CUP空闲时,再由SMARTDRV.EXE在后台偷偷把数据写到磁盘上,从而可大大加快写盘速度。

由于SMARTDRV.EXE只能使用XMS内存,所以事先必须在CONFIG.SYS文件中运行HIMEM.SYS程序,以开辟出XMS内存供SMARTDRV.EXE作高速缓冲区用.。注意SMARTDRV.EXE是个常驻程序,通常是写在AUTOEXEC..BAT中或在DOS提示符下单独运行,一般不应写在CONFIG.SYS文件中,只有写在AUTOEXEC.BAT中或在DOS提示符下运行才能起缓冲作用

另外,SMARTDRV.EXE 这个常驻程序很特殊,即使我们运行时不带LOADHIGH,它也会自动把自己装入到UMS中,(我们是说SMARTDRV.EXE程序本身会自动进入到UMB中,SMARTDRV.EXE所开辟的高速缓冲区依然在XMS内存,即扩展内存中)只有这一个特例,其它常驻程序若要装到UMB中,就都必须写上LADDHIGH。

SMARTDRV.EXE 程序的主要用法如下:

[盘行][路径] SMARTDRV.EXE[初始值][WINDOWS运行时的最小值] [L]

其中:

初始值(单位是Km一一是指使用多大的XMS内存作为磁盘高速缓冲区,越大当然越好,但若超过过2M,再增加效果就不明显了。若不给出最大值,SMARTDRV.EXE将视所配置的XMS内存的大小自动选择一个合适的值。

WINDOWS运行时的最小值(单位是KB)一一只有运行WINDOWS时才有可能用到这一参数。因为,WINDOWS要大量使用XMS内存,当调XMS内存紧张时,WINDOWS会自动地减少SMARTDRV.EXE所使用的高速缓冲区的大小,以便先满足自己对XMS的要求。规定一个最小值,就是给WINDOWS一个限制,高速缓冲区减少到这个最小值时,就不许WINDOWS再抢占SMARTDRV.EXE所用的高速缓冲区域了。

/L-――强行将SMARTDRV.EXE装入到常砚内存中(若不写,SMARTDRV.EXE自动将自己装到UMB中)

用法举例:

【例1】C:/DOS/ SMARTDRV.EXE(自动选择合适的高速缓冲区大小)

【例2】C:/DOS/ SMARTDRV.EXE 1024 502(初始值为1024K,WINDOWS行时的最小值为512K)

八、建立RAM盘的设备驱动程序RAMDRIVE.SYS的作用与用法

RAMDRIVE.SYS的作用是:用系统的一部分内存建立存取速度极快的RAM磁盘。

一般用法如下:

DEVICE=[盘符] [路径] RAMDRIVE.SYS [RAM盘容量] [/E][/A]

其中。

RAM盘容量(单位是KB)一使用多少内存去建立RAM盘,默认值64K。

/ E 使用XMS内存来建立RAM盘。事先应运行HIMEM.SYS才会有XMS内存。

/ A 使用EMS内存来建立RAM盘。事先应运行HIMEM.SYS和EMM386.EXE,才会有EMS内存。

若/E或/A都未写,则默认采用常规内存来建立RAM盘。

用法举例:

【例1】DEVICEHIGH=RAMDRIVE.SYS(使用常规内存,大小为64K)

【例2】DEVICEHIGH=RAMDRIVE.SYS 1024/E(使用XMS内存,大小为1M)

【例3】DEVICEHIGH=RAMDRIVE.SYS 2048/A(使用EMS内存,大小为2M)

九、各内存管理命令的相互依赖关系

通过上面对常用内存管理程序的细致分析,可看出这些命令之间运行有一个先后顺序问题,它们之间的相互关系如前所述。

在书写CONFIG.SYS文件时,心须先写HIMEM.SYS,然后再写EMM386.EXE,最后才是DEVICEHIGH命令,但DOS=HIGH,DOS=UMB及其它命令写在任何位置上均可。

扩展内存的简单设置

1.将DOS装入高位内存(HMA),其位置在1兆以上的64K区域内
在CONFIG.SYS文件中输入
DEVICE=HIMEM.SYS
DOS=HIGH
 
2.将驱动程序装到高端内存(上位内存),其位置在640K到1M之间(系统未用区)
在CONFIG.SYS中输入
DEVICE=EMM386.EXE RAM (NOEMS)
DOS=UMB
 
3.用DEVICEHIGH=设备驱动程序格式,使用高端内存:
DEVICE=HIMEM.SYS
DEVICE=EMM386.EXE RAM (NOEMS)
DOS=HIGH,UMB
DEVICEHIGH=ANSI.SYS

十、多重配置文件编写及常见错误

1.多重配置时CONFIG.SYS文件的一般结构

[MENU]

MENUITEM 配置块名1,对应的菜单显示文字

MENUITEM 配置块名2,对应的菜单显示文字

……

MENUCOLOR 菜单文字颜色,屏幕背景颜色(此行一般不写)

MENUDEFAULT 缺省配置块名,等待按键秒数(此行可省略)

[COMMON」

公共配置命令

[配置块名1]

 配置块1对应的命令

[配置块名2】

 配置块2对应的命令

十一、多重配置时CONFIG.SYS文件的常见错误

(1)配置块名中不得含有空格,菜单显示文字中可含有空格但不得用引号引起来。

(2)菜单显示文字可以省略,若省略,将以配置块名作为默认的菜单显示文字。

(3)运行时菜单显示文字中的内容将原封不动地显示在屏幕上,所以要注意菜单显示

文字必须与考题要求的大小写一致。如果菜单文字省略,则由于此时配置块名将作为默认的菜单显示文字显示在屏幕上,此时必须注意MENUITEM中所写的配置块名要与考卷要求的大小写一致。

(4)MFNUDEFAULT命令虽还未考过,但该命令很有用,应掌握。若写有MENUDEFAULT,则若在指定的时间内用户未按键选择,将自动执行所指定的缺省配置;若未写MENUDEFAUI1,则将一直等待用户按键选择一个配置。

(5)配置块名前后要一致,但大小写不必区分。

(6)配置块的书写顺序无要求,但习惯上将[COMMON]写在最前面。同名的配置块(包括公共块)可有多个,执行时将顺序执行所有的同名块。

(7)在多重配置文件中,任何一条配置命令都必须包含在某个配置块中,不允许有不属于任何配置块的配置命令。

(8)若公共块中不包含任何公共配置命令,则[COMMON]一行保留或删除都可以。

(9)尤其注意的是,凡在MENUITEM中列出的每个配置块,在后面必须有与之相对应的[配置块名],即使某个配置块中的内容为空,也必须写上一行[配置块名],绝不能省略,否则将来运行时将报错找不到对应的配置块名。这是最易犯错误的地方。

(10)一定要严格分清哪些命令应写在CONFIG.SYS中,哪些命令应写在AUTOEXEC.BAT中。设备驱动程序都应写在CONFIG.SYS中,而DOS内部命令和外部命令都应写在AUTOEC.BAT中。

十二、多重配置时AUTOEXEC.BAT文件的一般结构

公共执行命令

GOTO %CONFIG%

:配置块名1

配置块:要执行的命令

GOTO 结束标号名

:配置块名2

配置块2要执行的命令

GOTO结束标号名

:结束标号名

十三、多重配置时AUTOEXEC.BAT文件的常见错误

(1)在多重配置的AUTOEXEC.BAT文件中,最为重要的一条命令就是GOTO %CONFIG%,其中的“CONFIG”必须用两个百分号夹住,并且中间不能含有任何空格。在DOS中,“%环境变量名%”用法的含义是取指定环境变量的值。在多重配置时,CONFIG是DOS内部一个保留的环境变量名,它代表用户在MENUITEM定义的菜单中所选择的那个配置块的名字。例如,若用户在菜单中所选择的菜单项对应的配置块名字为WINDOWS,则%CONFIG%的值就是WINDOWS,此时,GOTO %CONFIG%就相当于GOTO WINDOWS,这样就可以灵活地根据先前的菜单选择转移到相应标号处。绝不能将此句写成“GOTO CONFIG”或写成“GOTO CONFIG.SYS”。

(2)在CONFIG。SYS文件中定义的每个配置块名,在AUTOEXEC。BAT中都必须存在相应的标号“:配置块名”。即使某个标号所属内容中无任何命令,也必须写一行“:配置块名”,不得省略任何一个标号。这也是最易犯错误的地方之一。

(3)用“:配置块名”语句定义的标号必须与先前在CONFIG.SYS中定义的相应配置块名一致,但大小写不必区分。另外,习惯上将结束标号名定义为END。

(4)每个标号下属语句的最后都应加上“GOTO 结束标号名”语句,并在文件尾用“:结束标号名”语句定义结束标号,表示做完本配置中的命令后跳过其它配置对应的命令。

(5)若无公共命令,则第一条命令即为GOTO %CONFIG%。

(6)若按以上写法,是先执行完公共命令,然后再执行相应配置块中的命令。有时,可能希望先执行配置块中的命令,最后再执行公共命令,这时就应将公共命令写在最后,即从“:结束标号”语句的下一行开始写公共命令。

五、一个最小的多重配置文件实例

多重配置题在光盘的练习题中都有,请学员结合以上所讲要点,对照这些考题自行加以分析,限于篇幅这里我们就不再举例分析了。

下面列出的一个多重配置实例,启动时仅显示一个配置选择菜单(两个配置名分别为DOS和WINDOWS),但无论选择哪个都不执行任何命令。这举例子没有任何实际意义,我们的目地是希望通过这举例子强调一个问题:即使一个配置块中不包含任何内容,CONFIG.SYS文件中的任何一个配置块定义语句(即“[配置块名]”)以及AUTOEXEC.BAT

文件中的任何一个标号定义语句(即“:配置块名”)都不能省略,否则运行时都将出错。

(1)CONFIG,SYS文件内容:

[MENU]

MENUITEM=DOS

MENUITEM=WINDOWS

[COMMON](这一行可以省略,但最好不省)

DOS」

[WINDOWS]

(2)AUTOEXEC.BAT文件内容:

GOTO %CONFIG%

:DO5

GOTO END

:WINDOWS

GOTO END

:END

   十四、当前盘和当前目录

  当前盘指当前位于哪个磁盘上,当前目录指当前位于该磁盘上的哪个目录中,一般说来,DOS提示符会告诉我们现在的当前盘当前目录在哪里。例如若屏幕上显示的提示符为C:\WINDOWS>,则表示现在正位于C:\WINDOWS>中。如果要改变当前盘,只要输入盘符并回车即可,例如C>A:↓,即可切换到八盘上,屏幕提示符自动改为A>;如来要改变目录必须使用下面将介绍到的CD命令。

  十五、文件标识符

  通过盘符、路径和文件名三要素(称为文件标识符)可唯一指定盘上的”个文件。但在实际使用时,为使用方便经常省略文件标识符中的某一部分。请特别注意下列使用原则:

   (1) 若盘符路径均缺省,则默认指当前盘当前目录。

   举例:C:/WINDOWS>DIR *.*↓

   解释:显示当前盘当前目录中的所有文件(即C:/WINDOWS子目录)。

   (2) 若盘符缺省,则默认指当前盘。

   举例:C:/WINDOWS>DIR  /DOS/*.*↓

   解释:显示当前盘指定目录中的所有文件(即C:/DOS子目录)。

   (3) 若路径缺省,则默认指当前目录。

   举例:C:/WINDOWS>DIR  A:*.*↓

   解释:显示指定盘当前目录中的所有文件(即A盘当前目录,不一定是A盘根目录)。

   (4) 若文件名缺省,则不同命令对其有不同的解释(大部分场合代表所有文件。相当于*.*,但也有例外)。

   举例:C:/WINDOWS>DIR ↓

   解样:显示当前盘当前目录中的所有文件(即C:/WINDOWS子目录,相当于省略了*.*)。

    十六、绝对路径和相对路径

   如果一个文件的文件标识符是从根目录算起的一条完整路径,则称之为绝对路径。反之,如果路径是从当前目录算起的,则称之为相对路径。初学者若对此搞不清楚,则使用绝对路径把握较大,但写起来较繁琐,使用相对路径则书写起来简单多了。

   举例:C:/DOS>DIR  C:/WINDOWS/SYSTEM/*.*↓

   解释:本例使用的是绝对路径,文件位置从C:盘根目录算起明确给出了其完整路径。

   举例:C:/DOS>DIR  WINDOWS/SYSTEM/*.*↓

   解释:本例使用的是相对路件。其含义是,显示当前盘当前目录C:/DOS>下的WINDOWS子目录的SYSTEM子目录的所有文件,其含义大不一样。这与下面命令相当,C:/DOS>DIR  C:/DOS/WINDOWS/SYSTEM/*.*↓

   使用时要特别注意其区分,一般原则是,若是使用当前目录中的内容或者当前目录中的内容,则使用相对路径较为合适;若是使用当前目录的上级(或更上级)目录中的内容,则使用绝对路径较为合适。

   十七、内部命令和外部命令

   DOS命令分为DOS内部命令和DOS外部命令两大类。在DOS提示符下执行的任何一条命令(包括内部和外部命令)都是由命令处理程序COMMAND.COM负责解释执行的。任何一张能用于启动DOS的系统盘上都必然包含以DOS的三个系统文件IO.SYS、MSDOS.  SYS和COMMAND.COM。命令处理程序COMMAND.COM正是在机器启动时由磁盘引导程序装进内存的、并且该程序一经装入即常驻内存。

   所有DOS内部命令的执行代码部包含在COMMAND.CO M程序中。我们知道,任何程序要执行都必须先进入内存,现在既然内部命令所使用的COMMAND.COM程序在机器启动时便已进入了内存,所以对于内部命令机器启动成功后便可直接使用,内部命令执行时我们绝不可为其指定盘符或路径。另外,由于内部命令执行时在内存中便可找到其对应的执行代码,不像外部命令那样需临时从磁盘上将对应的可执行程序装入到内存中再执行,所以内部命令的执行速度很快。

   内部命令都是一些常用的命令,但受基本内存容量限制,COMMAND.COM程序不可能做得很大,以致仍然有一些命令无法包含在其中。这些命令就只能以程序文件的形式存放在磁盘上,其扩展名分EXE和COM两种。使用时,用户通过其文件主名来调用相应的程序,这些程序文件不能在机器启动后就直接使用,并且都存放在外存上,所以你之为外部命令。以EXE和以COM为扩展名的磁盘文件部叫做DOS外部命令。

   已为内部命令在机器启动成功后即已在内存中了,所以执行内部命令时前面不需为其指定盘符路径。但执行外部命令时一般要给出该外部命令所在的位置,即在其程序名前指出盘符和路径,以使DOS执行该命令时能在磁盘上找到它,并把它调进内存。这是外部命令和内部命令在使用方法上的一个重要区别。由于外部命令比内部命令多一个从磁盘读入内存的过程·所以执行速度较慢。但需要指出,在以下两种情况下执行外部命令时,可不必给出盘符路径,一是该外部命令在当前盘的当前目录中,二是事先用DOS的PATH命令为外部命设置了搜索路径。

十八、一些常用的DOS内部命令

1.COPY命令

    用法: COPY (源文件标识符) [目标文件标识符]

    作用:复制文件、连接文件、建立文件、输出文件。

    例如:,C:/DOS>COPY  HIMEM. SYS  HINIEM2. SYS↓

    使用时,源文件名和目标文件名中均可使用通配符?和*,以便复制一批文件。

    (1)复制文件

    ① 同名复制 如果目标文件名与源文件名同名,则目标文件名可缺省。

    举例::C:/DOS>COPY HIMEM.SYS  C:/WINDOWS↓

    作用:将当前盘当前目录C:/DOS中的HIMEM.SYS复制到C:/WINDOWS 目录中,文件名不变(这里假设事先存在下级子目录WINDOWS)。

    举例::C:/DOS>COPY /*.SYS  C:/WINDOWS↓

    作用:将C盘根目录中的所有.SYS复制到C:/WINDOWS 目录中,文件名不变。

    ② 换名复制

    COPY命令可边复制边改名,当目标文件名与源文件名不同名时,目标文件的文件名必须列出。

    举例::C:/DOS>COPY HIMEM.SYS  C:/WINDOWS/HIMEM2.SYS↓

 解释:将HIMEM.SYS文件复制到C:/WINDOWS目录中,并改名为HIMEM2.SYS。

 举例:C:/DOS>COPY  *.TXT  C:/WINDOWS/*.DAT↓

 解释:将所有以TXT为扩展名的文件部复制到C:/WINDOWS目录中,并将复制过去的文件扩展名都改为DAT。

 ③ 整个目标文件名缺省时

 当整个目标文件的文件标识符全缺省时,表示要把源文件复制到当前目录中,且目标文件名与源文件名同名。

 举例:C:/WINDOWSS>COPY  C:/WINDOWS/*.SYS↓

 解释:将C:/WINDOWS目录中所有以SYS为扩展名的文件都复制到当前盘当前目录WINDOWS中。

 注意:如果复制到目标处恰好有与源文件同名的文件,则DOS将提示如下:Overwrite  XXXXXXXX.XXX Yes/No/All)?,这是在询问用户是否要覆盖目标处的同名文件,用户回答Y并回车表示复盖该文件;回答N并回车表示不覆盖该文件;回答A并回车表示不仅覆盖该文件,而且在该复制过程中自该文件以后的所有同名文件均覆盖,并不再提示。

(2) 文件连接

用法:COPY  (文件标识符1)+[文件标识符2]十[……][新文件名]

用加号将多个文本文件连接,合并成为一个新文件。

文本文件是指不含任何特殊控制符号,只包含纯粹文字信息的文件。例如,用DOS的COPY CON 、EDIT以及WINDOWS中的笔记本NOTEPAD)等所建立的文件都是文本文件。注意,对可执行文件进行连接没有任何意义。

举例:C:/>COPY C:/DOS/L1.TXT+C:/DOS/L2.TXT C:/DOS/L3.TXT↓

如果新文件名缺省则表示以第一个文件名作为新文件名。

(3)建立文本文件

使用DOS的保留文件名(也称保留设备名)CON:,可以将键盘上输入的内容生成一个新的文本文件。CON:作为输入设备解释时代表键盘,作为输出设备解释时代表屏幕。

举例:C:/>COPY CON:  A:/MEMO.DAT↓

解释:该命令执行后,我们便可在键盘上输入多行内容,输入完后按F6键或CRTL+Z键,然后回车,便可在A盘根目录中建立一个新文件MEMO.DAT。

(4)输出数据文件

将数据文件从屏幕或打印机上输出。

举例:C:/DOS>CPPY C/CONFIG.SYS PRN:↓

解释:在打印机上打印文件内容。其中DOS保留设备名PRN:代表打印机,可以理解为将文件复制到打印机上输出(注:PRN和CON后的冒号可以省略)。

举例:C:/DOS>COPY C:/CONFIG.SYS CON↓

解释:在屏幕上显示文件内容。

2.DEL命令(或ERASE命令)

用法:DEL[文件标识符]

作用:将指定的一个或一批文件删除(该命令不能用于删除目录),文件名中允许出现通配符。

举例:C:/>DEL C:/DOS/OS2.TXT↓

举问:C:/TEMP/DEL *.*↓ (删除指定目录中的所有文件时要小心)

3.REN命令(或RENAME命令)

    用法:REN  [源文件标识符]  [新文件标识符]

作用:将源文件名改为新文件名。文件名中允许出现通配符,即允许同时对一批文件进行改名。

举例:C:/DOS>REN  README.TXT HELP.DOC ↓

举例:C:/DOS>REN  *.TXT *.DOC ↓

解释:将C:/DOS目录中所有以TXT为扩展名的文件的扩展名都改为DOC,文件主名不变。

注意:(1)源文件名中可以出现盘符路径,但新文件名中绝对不允许出现盘符路径。因为改名后的新文件只能位于源文件所在的目录路径处。

     (2)新文件名不允许与源文件所在目录的其它文件同名。

4.TYPE命令

用法:TYPE[文件标识符]

作用:将指定文件所包含的全部内容在屏幕上显示出来。用该命令显示可执行文件中的内容是没有意义的。

举例:C:/DOS>TYPE README.TXT ↓

注意:(1)文件名中不允许出现通配符?和*,一次只能显示一个文件的内容。

      (2) 通过重定向命令可以将文件内容输出到打印机或其它文件中,但屏幕上将不再显示文件内容。如:C:/DOS>TYPE C:/AUTOEXEC.BAT>PRN↓

5. CD命令(或CHDIR命令)

用发:CD [盘符] [目录]

作用:改变(进入)到指定目录中或显示当前目录。

CD命令只能改目录,不能改变盘符。

有几个特殊的子目录名要注意,“.”表示当前目录,“..”表示当前目录的上级目录,“/”表示根目录。

CD命令共有如下四种用法:

(1) 若只给出目录名,其作用是改变当前盘的当前目录到指定目录中。这是CD命令的最主要的用法。

举例:C:/WINDOWS>CD SYSTFM↓

显示:C:/WINDOWS/ SYSTFM>

(2)若同时给出盘符和目录名,其作用是切换指定盘的当前目录到指定目录中。用这种方法,可在当前盘不变的情况下,改变另一个盘的当前目录。

举例:C:/WINDOWS>CD A:/WARNING ↓

将A盘的当前目录改变到WARNING中)

显示:C:/WINDOWS>

(注意:当前盘并未改变,所以系统提示符未改变)

操作:C:/WINDOWS>A: ↓

显示:A:/WARNING> (A盘的当前目录的确改变了)

(3) 若只给出盘符,其作用是显示一下指定盘的当前目录现在在什么位置上。

举例:C:\WINDOWS> CD A: ↓

显示:A:/(表示A盘的当前目录为根目录)

(4) 若未给出任何参数,其作用是显示一下当前盘当前目录现在在什么位置上。

举例:C:\WINDOWS> CD ↓

显示:C:\WINDOWS

表示当前盘当前目录为C:\WINDOWS>,与提示符中显示的一样)

6.  MD命令(或MKDIR命令)

用法:MD [盘符:] [新子目录名]

作用:建立指定的新子目录。

注意:(1)新建子目录要注意,同一个目录下不能有两个相同名字的子目录或文件。

      (2)  建立多级子目录时,必须先建上级于目录,再建下级子目录,从上自下逐级执行。

举例:C:/DOS/MD DOS1↓

      C:/>MD WORK↓

         (3) 该命令一次只能建立一个子目录。

7.RD目录(或RMDIR)命令

用法:RD [盘符:] [子目录名]

作用:删除指定的子目录。

注意:(1)删除一个子目录时一定要保证该目录下已经无任何内容,必须从下往上逐级删除。显然,这条命令远不如外部命令DELTREE.EXE方便。

     (2)不能删除当前目录,必须退回到其上级目录或其它目录中才能删除。

      (3) 该命令一次只能删除一个子目录。

举例:C:/WORK目录中己有一些文件和一个名为WORKI的子目录,要求删除WORK子目录。

操作:C:/DEL WORK/*.* ↓

      C:/DEL WORK/WORK1*.* ↓

      C:/RD WORK/WORK1 ↓

      C:/RD WORK↓

8.PATH命令

用法:PATH [盘符:][路径];[盘符:][路径]………

作用:PATH用来设置外部命令的查找路径。当用户执行一个外部命令时,DOS总是先在当前目录中寻找对应的程序文件,如找不到,则会自动按PATH所设置的查找路径顺序,依次查找这些路径中是否存在该程序文件,若找到则立即执行,如在PATH命令设置的路径中还是未找到对应的程序文件时,系统提示:Bad COMMAND or FILENAME(错误命令和文件)。一旦用PATH设置好查找路径,则以后无论在任何子目录中都可直接执行这些路径中所包含的外部命令,非常方便。

注意:(1)PATH设的查找路径之间必须用分号分隔,不能使用空格。所设计的查找路径中请使用绝对路径,不要使用相对蹋径。

(2)PATH所设置的查找路径一设置就一直有效。若用PATH重新设置过查找路径,则新的查找路径会自动覆盖当前的查找路径。

(3)删除先前所设置的所有查找路径需使用命令PATH;

(4)只有用户执行以EXE、COM或BAT为扩展名的程序文件时,DOS才按PATH设置的查找路径去查找。PATH对其余扩展名的文件无效。

(5)PATH后不带参数表示显示当前所设置的查找路径。

举例:运行C:/DOS中的外部命令ATTRIB的几种方法。

[方法1]:明确写明外部命令所在的盘符路径。

C:/WINDOWS>C:/DOS/ATTRIB↓

[方法2]先进入该子目录中,然后执行该外部命令。

C:/WINDOWS>CD /DOS↓

C:DOS>ATTRIB↓

[方法3]先用PATH命令设置查找路径,将该子目录包含在查找路径中,这样以后便可在任何子目录中直接执行该外部命令。

    C:/WINDOWS>PATH :/DOS;C:/WINDOWSC;/UCDOS;C:/FOXPRO25↓

       C:/ATTRIB↓

9.CLS命令

用法:CLS

作闲:清除屏幕上显示的所有内容,并将光标定位于屏幕左上角。

十九、常用的DOS外部命令

1.FORMAT命令

目法:FORMAT(盘符)/U/Q/S

作用:格式化指定驱动器中的磁盘,使之能在DOS下使用,寻找并标识出坏的磁道,建立并初始化该磁盘的引导记录、文件分配表和根目录表。被格式化磁盘中的所有数据都将丢失,新盘只有格式化后才可使用。

(1)快速格式比(参数/Q)

快速格式比的对象必须是一张已格式化过的磁盘,使用参数/Q来进行,它将清空文件分配表和根目录表,但磁盘上数据区的所有内容均保持不变,也不检查磁盘上的坏磁道,所以格式化的速度较快。快速格式化后的磁盘可用UNFORMAT命令恢复,但对新盘不能使用快速格式比。

(2)无条件格式化(参数/U)

无条件格式化使用参数/U进行,它将清除磁盘中的所有数据,同时检查坏磁道,格式化速度较慢。无条件格式化不保存磁盘原来的系统区,所以格式化后的磁盘以后无法用UNFORMAT命令恢复,而没有使用/U的FORMAT命令一般都可用UNFORMAT命令来恢复。对新盘或者使用了很久时间的磁盘使用无条件格式化较为合适。

(3)格式化并制作一张系统盘(参数/S)

使用参数/S将在格式化完一张磁盘后,随即将系统程序复制到该盘中,使其成为一张可启动DOS的系统盘。系统程序指如下四个程序:IO.SYS,MSDOS.SYS、DRVSPACE。BIN、COMMAND。COM,其中前三个程序为系统、隐含、只读文件。

(4)以上参数可组合使用,如果想最快速地格式化一张盘,使用/Q参数组合,格式化的速度是最快的,如果格式化时/Q/U参数都未写,则默认保存原系统区,并检查坏磁道,格式化后的磁盘可用UNORMAT命令恢复,但格式化的速度是最慢的。

举例:格式化一张磁盘。

操作:C:/DOS/FORMAT A↓

举例:格式化一张能启动DOS的系统盘。

操作:C:/DOS/FORMAT A/S↓

举例:最快速的格式化一张磁盘。

操作:C:/DOS/FORMAT A/Q/U↓

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章