环境是
DOS
系统的变量存储区
——
一个高速暂存存储器,它保存于
RAM
中,是
DOS
系统保存重要信息以供批处理文件使用的场所。用户可以根据需要修正或改变它的信息。很多
DOS
参考书都忽略了它,但不管你知不知道,都在自觉或不自觉地使用着它。
如何造访环境
造访环境有两种方法,一种是通过 SET 命令来查看,另一种是使用 DOS 系统的 DEBUG 命令来 查看计算机的 RAM 。 SET 命令直观、方便,大多数 DOS 用户都喜欢使用它来设置和查看 DOS 环境。
1. 用 SET 命令
SET 命令可用于设置、修改和查看环境变量,键入无参数的 SET 命令可显示当前环境设置。这些 设置一般包括 COMSPEC 和 PATH 环境变量, MS - DOS 用它们在磁盘上寻找程序。另外还有 PROMPT 、 DIRCMD 、 COPYCMD 等为 DOS 系 统所使用的其它环境变量。这些环境变量大多在 AUTOEXEC.BAT 或 CONFIG.SYS 文件中用 SET 命令设置而生成。如下例:
C
:
/>SET COMSPEC=C
:
/COMMAND.COM
PROMPT=$p$g
PATH=C:/WINDOWS;C:/;C:/DOS;C:/FOXPRO25;C:/UCDOS;C:/GYPC;C:/CCED;C:/HD;C:/SARP
TEMP=C:/DOS
2. 通过 DEBUG 命令
DEBUG 是 DOS 提供的调试程序的有力工具,利用它可以检验磁盘原始信息、查看内存单元、反 汇编程序文件或生成新程序等等,然而 DEBUG 命令有一定的危险性,因此用户在使用过程中须注意。
DOS 系统每运行一个程序都要生成一个 256 字节的内存块 —— 程序段前缀 PSP(Program Segment Prefix) ,它包含了一些比较重要的信息,如内存单元、矢量、命令行上键入的文件名、命令行本身 ( 用户运行 程序的命令行的拷贝 ) 、各种保留缓冲器存储地点的信息。只要涉及环境,那些存储地点之一就会保存系统环境地址。
在 DEBUG 命令状态下查看环境,首先查看偏移量 2C 处的两个字节:
-
D2CL2
1B41
:
0020
90 09
数据 90 09 是在某系统上得到的计算机环境的段地址值 ( 用户在操作时应以实际显示数为准 ) , 把这两对数以相反的顺序,并在后面跟上偏移量 0 ,就能在 DEBUG 命令上显示系统环境。如下例:
-
D0990
:
0
0990
:
0000
43 4F 4D 53 50 45 43 3D
-
43 3A 5C 43 4F 4D 4D 41 COMSPEC=C
:
/COMMA
0990
:
0010
4E 44 2E 43 4F 4D 00 50
-
52 4F 4D 50 54 3D 24 70 ND.COM.PROMPT=
$
p
0090
:
0020
24 67 00 50 41 54 48 3D
-
43 3A 5C 57 49 4E 44 4F
$
g.PATH=C
:
/WINDO
0990
:
0030
57 53 3B 43 3A 5C 3B 43
-
3A 5C 44 4F 53 3B 43 3A WS
;
C
:
/
;
C
:
/DOS
;
C
:
0990
:
0040
5C 46 4F 58 50 52 4F 32
-
35 3B 43 3A 5C 55 43 44 /FOXPRO25
;
C
:
/UCD
0990
:
0050
4F 53 3B 43 3A 5C 47 59
-
50 43 3B 43 3A 5C 43 43 OS
;
C
:
/GYPC
;
C
:
/CC
0990
:
0060
45 44 3B 43 3A 5C 48 44
-
3B 43 3A 5C 53 41 52 50 ED
;
C
:
/HD
;
C
:
/SARP
0990
:
0070
00 54 45 4D 50 3D 43 3A
-
5C 44 4F 53 00 00 01 00 .TEMP=C
:
/DOS...
从上面所显示的环境可以看到,环境中的每项都被 “ 空 ” 字节 00 隔开,并且环境中的最后一项后面 是两个空字符。
上面两种方法所显示的环境,其结果是一致的。
环境变量 “ 众生相 ”
1.COMSPEC 变量
这个变量规定了 COMMAND.COM 文件的位置。通常,如果计算机由硬盘驱动器引 导 COMSPEC 变量表示为:
COMSPEC=C : /COMMAND.COM
如果是从软盘驱动器引导的,则 COMSPEC 变量表示为:
COMSPEC=A : /COMMAND.COM
使用 SET 命令能改变 COMSPEC 的位置,格式为:
SET COMSPEC=C : /DOS/COMMAND.COM
此命令在系统环境中把 COMSPEC 重新设置成 C 盘 DOS 目录中的 COMMAND.COM 文 件,因为 COMMAND.COM 不需要在用户的根目录中。用户也可以把 COMMAND.COM 放进其它子目录中,采用 CONFIG.SYS 的 SHELL 命 令来完成这项工作。在计算机的启动过程中, CONFIG.SYS 是在 COMMAND.COM 装入之前运行的,用 SHELL 命令通知 DOS 系统 COMMAND.COM 在另一个目录中,则系统到那个目录去找它。这有一个明显的优点,它保持了根目录的清洁。
另外,为保证系统能正常运行,用户还需在 CON FIG . SYS 文件中加上这样一句:
SHELL=C:/DOS/COMMAND.COM /P [/E:1024]
此命令指示 DOS 在 C : /DOS 子目录中寻找并运行命令解释程序或外壳程序 COMMAND.COM 。如果把此命令加到 CONFIG.SYS 文件中,可提前把 COMMAND.COM 移到 DOS 子目录中。 P 选项指示 COMMAND.COM 在根目录中寻找 AUTOEXEC.BAT 文件并且运行它,如果没有此选项,则根目录下的 AUTOEXEC.BAT 文件不能运行。
当 DOS 系统没有更多的空间存储环境变量时,将会看到信息:
Out of environment space( 环境空间溢出 )
出现这种情况后,可利用 SHELL 命令加大 COMMAND.COM 的环境空间,可选项 E : 1024 就是将环境空间扩大到 1KB(1024 字节 ) 。
2.PROMPT 变量
这个环境变量显示用户所设置的命令提示符。 DOS 系统提示符一般设置为显示当前驱动器和路径后 接一 “>” 符号,当然也可以设置为其它类型的命令提示符,这个变量一般在 AUTOEXEC . BAT 文件中设置,命令使用的一般格式为:
PROMPT $p$g
当然,你也可以使用 SET PROMPT=$p$g 。
3.PATH 变量
这个环境变量包括用 PATH 命令设置路径,使 DOS 系统能在指定的目录中搜索可执行的文件。
4.DIRCMD 变量
这个环境变量让用户确定 DIR 命令缺省使用的开关和参数集。用户可在 AUTOEXEC.BAT 文件中或命令提示符下使用 SET 命令定义 DIRCMD 环境变量,预先设置 DIR 的参数和选项的合法组合 ( 可包括路径和文件名 ) 。
例如,要把 DIRCMD 环境变量设置为满屏时暂停 ( / P) 为缺省格式,在 AUTOEXEC.BAT 批处理文件或 DOS 命令提示符下键入:
SET DIRCMD=/P
这时使用 DIR 命令,在满一屏时将暂停并提示 “ 按任意键继续 ” 。
若不想使用这个缺省格式,可在命令行上使用:
DIR/-P
如要清除此缺省设置,在命令提示符下键入:
SET DIRCMD=
5.COPYCMD 变量
用户可以通过设置 COPYCMD 环境变量,指定 COPY 、 MOVE 、 XCOPY 命令是否先给出 提示,经确认后再覆盖文件。
若强制要求 COPY 、 MOVE 、 XCOPY 命令在所有情况下均先给出提示:
Overwrite Filename(YES / NO / ALL) ?
就把 COPYCMD 环境变量设置成/- Y(SET COPYCMD= /- Y) ,用户可以根据需 要来选择是否覆盖。也可以强制要求 COPY 、 MOVE 、 XCOPY 命令在所有情况下都不提示就进行覆盖 , 则把 COPYCMD 环境变量设置成 / Y(SET COPYCMD= / Y) 。这里所设置的 COPYCMD 环境变量,优先于 COPYCMD 环境变量的所有缺省值和当前值。
6.TEMP 变量
TEMP 是一个常用的环境变量,它告诉程序在何处建立临时文件,而有一些程序需要使用环境变量 来识别它们要使用的目录。如下例:
SET TEMP=C:/DOS
在此例中,环境变量 TEMP 被 DOS 环境和一些其它程序使用,以确定当前文件子目录的位置。上 面的目录 C : /DOS 被放入环境中,现在 DOS 系统知道把它们当前的文件放在哪里。在 AUTOEXEC.BAT 文件中,用户能够也应该设置环境的整个转 换。
环境变量与批处理文件的亲密关系
使用环境变量可以控制某些批处理文件和使程序可按照用户的意愿进行,可以控制 MS - DOS 显示 与工作的方式。一般在 AUTOEXEC . BAT 或 CONFIG .SYS 文件中用 SET 命令设定用户环境,以便每次启动计算机时系统都能根据用户需要自动设 置环境变量。
1. 在批处理文件中调用环境变量
从批处理文件中调用环境变量值时,必须用百分符 ( % ) 将变量值括起来。如设置名为 WIN32 的 变量,使它等于字符串 C : /Windows/SYSTEM(C 盘中的目录 ) ,可键入以下命令:
SET WIN32=C:/WINDOWS/SYSTEM
在批处理文件中可用% WIN32 %代替 C : /WINDOWS/SYSTEM 。在批处理文件中包 括以下命令,显示 C : /WINDOWS/SYSTEM 环境变量的目录内容:
DIR %WIN32%
当 MS - DOS 处理该命令时,会用字符串 C : /WINDOWS/SYSTEM 代 替% WIN32 %。
2. 在批处理文件中保存和恢复原有环境下的路径
对每一个批处理文件,用户都可以修改环境变量,而各个批处理文件需要不同的 PATH 指明路径, 以执行批处理下的程序,这就需要用户保存原有环境下的路径。用户可在批处理文件中使用一个环境变量暂时存储用户原来的路径,以便在需要时可以恢复,而不需 要重新用 PATH 命令来设置:
SET OLDPATH=%PATH%
例如某计算机的设置如下:
SET OLDPATH=C:/WINDOWS;C:/; C:/DOS;C:/FOXPRO25; C:/UCDOS; C:/GYPC; C:/CCED;C:/HD; C:/SARP
批处理文件解释程序把% PATH %变量扩展成用户的当前路径,故 OLDPATH 变量等于此路 径。如果此时系统因使用其它批处理文件而打乱了原系统路径,可简单地在批处理文件中使用下列语句恢复路径的原貌,以满足用户对不同环境的需要。如下例:
PATH %OLDPATH%
计算机显示它的执行情况:
PATH C:/WINDOWS;C:/;C:/DOS;C:/FOXPRO25;C:/UCDOS;C:/GYPC;C:/CCED;C:/HD;C:/SARP
其实,很多用户都可能在各自的 AUTOEXEC.BAT 文件中存有 “OLDPATH” 变量,由 于此环境变量总包含原有路径的备份,因此可以很容易地恢复原有路径。
小结
环境是 DOS 系统很重要的内容之一,它是 DOS 系统保存重要信息供批处理文件使用的变量存储区 —— 一个高速暂存存储器。它在此保存重要的信息,且用户能把批处理文件的环境变量放入其中。
SET 命令对环境而言是相当重要的,它被用来给变量赋值、清除变量,并显示环境内容。
除了用户生成环境变量 (COMSPEC) 给出 COMMAND COM 的位置外, PATH 设置系 统的搜索路径; PROMPT 设置系统提示符; COPYCMD 环境变量指定 COPY 、 MOVE 、 XCOPY 命令是否对要覆盖的文件进行提示; DIRCMD 环 境变量可以预置 DIR 参数和开关项。
由于环境表相当小, SHELL 命令可用于扩大其容量,这虽然避免了 “ 环境空间溢出 (Out of environment space)” 这个错误,但同时也多占了系统的 RAM 。