DOS變量全家福

環境是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。
 

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