DOS 環境變數學習

來源:互聯網
上載者:User

環境是DOS系統的變數儲存區,它儲存於RAM中,是DOS系統儲存重要訊息以供批次檔使用的場所。使用者可以根據需要修正或改變它的資訊。很多DOS參考書都忽略了它,但不管如何,使用者都在自覺或不自覺地使用著它。
  
如何設定、查看環境
  造訪環境有兩種方法,一種是通過SET命令來查看,另一種是使用DOS系統的DEBUG命令來查看電腦的RAM。SET命令直觀、方便,大多數使用者都使用它來設定和查看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隔開,並且環境中的最後一項後面是兩個Null 字元。
  上面兩種方法所顯示的環境,其結果是一致的。
  
環境變數
  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。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.