Q:DOS 知識補充
A:DOS 系統的維護
一個(gè)系統只有進(jìn)行好的維護,才能發(fā)揮出好的效果。那么,對于DOS系統,應當如何維護呢?
首先,要定期檢查磁盤(pán)的錯誤。DOS下有許多命令可以用來(lái)檢查磁盤(pán),如CHKDSK,SCANDISK等。而一個(gè)更強大的磁盤(pán)工具則是Norton的Disk Doctor(磁盤(pán)醫生),它有著(zhù)友好的界面和強大的功能,可在“DOS軟件分類(lèi)下載“中下載。只有定期檢查磁盤(pán),才能保證磁盤(pán)使用的穩定性。
其次,要定期檢查病毒。計算機病毒是一種能?chē)乐匚:ο到y安全和數據完整的破壞性程序,如果任其發(fā)作,可能會(huì )造成嚴重的損失。所以,定期檢查病毒是非常重要和必要的。要檢查病毒,需要使用好的殺病毒軟件,而且注意經(jīng)常升級病毒庫,否則起不到應有的效果。實(shí)用的DOS下殺毒軟件有F-PROT,Norton AntiVirus,KV3000等,可以在“DOS軟件分類(lèi)下載“中下載。當然,光使用殺毒軟件,卻不注意防范,也是不行的。防毒通常比殺毒更有效,因為防毒可以大大減少病毒感染的可能性。防毒的方法有多種,如使用病毒防火墻程序,不要使用來(lái)歷不明的軟件等。通過(guò)這些方法,病毒通常無(wú)法侵入。
然后,要定期備份重要的數據。因為即使采用了前面的兩種措施,也只能大大降低數據被破壞的可能性,而不是高枕無(wú)憂(yōu)了。由于誤操作或硬件故障等原因造成的數據丟失情況隨時(shí)都可能發(fā)生。因此,備份數據就十分必要了。通??蓪⑺鼈儌浞莸杰洷P(pán)或其它硬盤(pán)中以防不測,以免到時(shí)后悔莫及。
當然,還需要進(jìn)行一些其它維護,如定期整理磁盤(pán)碎片,刪除垃圾文件,以及將文件和軟件歸類(lèi)以方便使用等。
對于系統配置的維護也是非常重要的,也可以使用一些工具軟件來(lái)進(jìn)行自動(dòng)維護,如用MEMMAKER等。這樣可以有效地節省時(shí)間和精力。
DOS下內存的配置
我們大家都知道,DOS大體上不能夠完全依靠人機界面的方式來(lái)一步步地完成系統的配置。若要讓系統發(fā)揮出最大的性能,必須依靠我們的進(jìn)一步努力。下面介紹一下DOS內存的配置方法。
實(shí)模式的DOS通常只能使用1M以下的內存空間。其中基本內存為640K,而上位內存則需要相應的內存管理器?;緝却娴墓芾碛葹橹匾?,因為使用不當會(huì )造成一些程序無(wú)法運行。那么,應如何優(yōu)化使用它呢?這兒有一些建議。
首先,加載提供上位內存(UMB)的內存管理器。通常有EMM386和QEMM等,不過(guò)這些工具自身占用的內存較大,在此推薦的是UMBPCI,這是一個(gè)仍在發(fā)展的工具,可提供最大高達162K的UMB,而且如果放在HIMEM前可完全不占用基本內存。然后,將所有的設備驅動(dòng)程序/TSR調入UMB(用DEVICEHIGH,LOADHIGH等),這樣,即使加載許多驅動(dòng)程序(如光驅?zhuān)髽说龋?,剩下的基本內存仍?huì )很高,甚至630K。要注意的是,盡量使用占內存較少的驅動(dòng)程序,以便空出最多的UMB。
以下是在我的電腦上(MS-DOS 7.10)用MEM/A/C命令顯示出的內存狀態(tài)信息:
Modules using memory below 1 MB:
Name Total Conventional Upper Memory
-------- ---------------- ---------------- ----------------
SYSTEM 32,736 (32K) 9,664 (9K) 23,072 (23K)
HIMEM 1,168 (1K) 0 (0K) 1,168 (1K)
SETVER 864 (1K) 0 (0K) 864 (1K)
VIDE-CDD 5,024 (5K) 0 (0K) 5,024 (5K)
CLOAKING 1,168 (1K) 0 (0K) 1,168 (1K)
IFSHLP 2,864 (3K) 0 (0K) 2,864 (3K)
COMMAND 7,424 (7K) 0 (0K) 7,424 (7K)
KILLER 400 (0K) 0 (0K) 400 (0K)
WATCH 3,392 (3K) 0 (0K) 3,392 (3K)
MSCDEX 2,816 (3K) 0 (0K) 2,816 (3K)
DOSKEY 5,744 (6K) 0 (0K) 5,744 (6K)
CTMOUSE 3,344 (3K) 0 (0K) 3,344 (3K)
ZENO 1,376 (1K) 0 (0K) 1,376 (1K)
ESCAPE 496 (0K) 0 (0K) 496 (0K)
Free 750,080 (732K) 645,328 (630K) 104,752 (102K)
Memory Summary:
Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 655,360 10,032 645,328
Upper 163,904 59,152 104,752
Reserved 393,216 393,216 0
Extended (XMS) 49,119,168 82,880 49,036,288
---------------- ----------- ----------- -----------
Total memory 50,331,648 545,280 49,786,368
Total under 1 MB 819,264 69,184 750,080
Largest executable program size 645,312 (630K)
Largest free upper memory block 103,952 (102K)
Available space in High Memory Area 5,360 (5K)
MS-DOS is resident in the high memory area.
從上表中可以看出,我加載了以下內存駐留程序及驅動(dòng)程序:
HIMEM:DOS中自帶的XMS驅動(dòng)程序。
SETVER:DOS版本表程序。
VIDE-CDD:通用光驅驅動(dòng)程序。如果您的光驅是USB的,則用DUSE。
CLOAKING:內存CLOAKING API及DPMS驅動(dòng)程序,以節省MSCDEX的內存占用。
IFSHLP:32位的磁盤(pán)服務(wù)程序,用于Windows 9x中,可以不加載。
COMMAND:DOS命令處理器。
KILLER:自動(dòng)截獲不正確的指令,防止死機。
WATCH:TSR Utils中的一個(gè),DISABLE命令利用它可以禁止其它TSR程序的功能。
MSCDEX:和CLOAKING程序合用的MSCDEX,只占不到3K內存,否則要占約30K。
DOSKEY:DOS自帶的鍵盤(pán)緩沖和歷史程序。
CTMOUSE:DOS下通用的鼠標驅動(dòng)程序,占內存小,速度也非???。
ZENO:顯示加速程序。
ESCAPE:在任何時(shí)候都可以按F12鍵退回到DOS方式下,以防止死機。
當然,我還加載了不少非內存駐留程序。如果您想知道我的CONFIG.SYS文件中的具體設置內容,可看下面的“CONFIG.SYS文件的命令與配置“。
CONFIG.SYS文件的命令與配置
命令與配置
CONFIG.SYS是DOS系統中的一個(gè)重要文件,它的配置直接影響到系統的使用及其效率。如果配置不當的話(huà),可能很多程序都無(wú)法正常運行。因此,正確合理地配置CONFIG.SYS文件是十分必要和重要的。下面我向大家介紹一下CONFIG.SYS中的命令及其配置方法。
CONFIG.SYS中的命令:
注意:所有以HIGH結尾的命令(如DEVICEHIGH)表示將其調入UMB(上位內存),但有些這樣的命令(如FILESHIGH)必須在MS-DOS 7.x版本中使用。
ACCDATE:指定對每一個(gè)驅動(dòng)器是否記錄文件最后被訪(fǎng)問(wèn)的日期。
用法:ACCDATE= 驅動(dòng)器 1+|- [ 驅動(dòng)器 2+|-]...
如:ACCDATE=C+ D+ E+將在C,D,E盤(pán)中記錄文件最后被訪(fǎng)問(wèn)的日期。
此命令僅用于MS-DOS 7.x中。
BREAK:設置或清除擴展的CTRL+C檢查。
用法:BREAK=ON|OFF
BUFFERS/BUFFERSHIGH:為指定數量的磁盤(pán)緩沖區分配內存。
用法:BUFFERS=磁盤(pán)緩沖區數量,[從屬高速緩存中的緩沖區數量]
DEVICE/DEVICEHIGH:將指定的設備驅動(dòng)程序裝入內存。
用法:DEVICE/DEVICEHIGH 文件名 [參數]
其中,文件名是文件的完整路徑,如C:\DOS\HIMEM.SYS。
DOS:用于DOS系統的配置,如是否使用HMA(高端內存區)等。
用法:DOS=[HIGH|LOW][,UMB|,NOUMB][,AUTO|,NOAUTO][,SINGLE]
其中,HIGH和LOW表示使用HMA或不使用HMA,UMB和NOUMB表示使用UMB或不使用UMB,AUTO或NOAUTO表示系統自動(dòng)配置或不自動(dòng)配置,SINGLE表示使用單一模式的DOS。其中,AUTO/NOAUTO和SINGLE僅用于MS-DOS 7.x中。
DRIVPARM:設置現有物理設備的參數。
注:此命令用得很少,我也沒(méi)用過(guò),所以暫時(shí)跳過(guò)。
FCBS/FCBSHIGH:指定可以同時(shí)打開(kāi)的文件控制塊 (FCB) 的數量。
用法:FCBS/FCBSHIGH=可以同時(shí)打開(kāi)的FCB的數量。
注:由于FCB主要是在DOS 1.x中使用,對于高版本,所以可以讓系統自動(dòng)配置。
FILES/FILESHIGH:指定 可以同時(shí)訪(fǎng)問(wèn)的文件數量。
用法:FILES/FILESHIGH=可以同時(shí)訪(fǎng)問(wèn)的文件數量。
注:一般FILES/FILESHIGH的設置值在30左右比較合適。
INSTALL/INSTALLHIGH:用于加載TSR(內存駐留程序)。
用法:INSTALL/INSTALLHIGH=文件名 [參數]
如:INSTALLHIGH=C:\DOS\DOSKEY.COM /APPEDIT
LASTDRIVE/LASTDRIVEHIGH:指定可以訪(fǎng)問(wèn)的驅動(dòng)器的最后有效的驅動(dòng)器字母。
用法:LASTDRIVE=驅動(dòng)器字母
如LASTDRIVE=F會(huì )將F設置成最后有效的驅動(dòng)器字母。
NUMLOCK:指定啟動(dòng)時(shí)NUMLOCK指定燈是否打開(kāi)。
用法:NUMLOCK=ON|OFF
REM:添加注解。
用法:REM [注解字符串]
注:注解中的字符串只是用來(lái)增加可讀性,將不被執行。
SET:設計DOS環(huán)境變量。
用法:SET 變量=[變量值]
SHELL:指定DOS 使用的命令解釋程序的名稱(chēng)和位置。
用法:SHELL=文件名 [參數]
注:文件名默認是COMMAND.COM,您也可以指定其它的文件,如4DOS.EXE等。
STACK/STACKHIGH:指定使用的堆棧數量。
用法:STACK/STACKHIGH=堆棧數量,每個(gè)堆棧的大小
注:通常指定的值是9,256,這個(gè)值可以滿(mǎn)足大多數的需求。
SWITCHES:指定一些特殊選項。
用法:SWITCHES=[/W] [/F] [/K] [/N] [/E[:n]]
其它的是一些菜單配置命令,如MENUITEM,MENUCOLOR等。
在MS-DOS 7.x中還有一些未公開(kāi)命令,如LOGO,COMMENT等。
知道了以上的命令后,就要談?wù)勅绾卫眠@些命令來(lái)配置CONFIG.SYS文件了。配置的好壞對系統的影響是非常大的。以下是我的電腦(都是MS-DOS 7.10)中CONFIG.SYS文件中的內容,大家可以用作參考。
電腦一,使用EMM386.EXE:
device=d:\tools\dostools\echo.sys L/o/a/d/i/n/g CONFIG.SYS...
device=d:\tools\mdctools\himem.sys /testmem:off
device=d:\tools\mdctools\emm386.exe noems novcpi i=b600-b7ff
devicehigh=d:\tools\mdctools\setver.exe
devicehigh=d:\software\pwin98se\ifshlp.sys
devicehigh=d:\tools\dostools\vide-cdd.sys /d:CDROM1
devicehigh=d:\tools\dostools\cloaking.exe
country=086,936,d:\tools\mdctools\country.sys
shell=c:\command.com /p /e:640
set temp=e:\temp
set tmp=e:\temp
accdate=c+ d+ e+
dos=high,umb
numlock=off
files=30
buffershigh=30,0
fcbshigh=4,0
lastdrivehigh=n
stackshigh=9,256
電腦二,使用UMBPCI.SYS:
device=d:\tools\dostools\echo.sys L/o/a/d/i/n/g CONFIG.SYS...
device=d:\tools\dostools\echo.sys
device=d:\tools\dostools\umbpci.sys
device=d:\tools\dostools\hiram.exe
devicehigh=d:\tools\mdctools\himem.sys /testmem:off
devicehigh=d:\software\pwin98se\setver.exe
devicehigh=d:\software\pwin98se\ifshlp.sys
devicehigh=c:\dos\vide-cdd.sys /d:CDROM1
shell=d:\tools\mdctools\command.com /p /e:640
set temp=e:\temp
set tmp=e:\temp
accdate=c+ d+ e+
dos=high,umb,auto
country=086
numlock=off
fileshigh=30
buffershigh=30,0
stackshigh=9,256
lastdrivehigh=n
您不妨試試,相信您也會(huì )做出好的CONFIG.SYS文件來(lái)。
DOS批處理文件
DOS下的可執行文件有三種,分別是EXE,COM和BAT。其中,EXE和COM文件都是二進(jìn)制形式的,只有BAT文件是文本形式的,可以直接閱讀。因此,BAT文件和以上二進(jìn)制可執行文件相比,內容要簡(jiǎn)單的多。這些文件內包含著(zhù)DOS命令的集合,通常叫作批處理文件。批處理文件的組成雖然比較簡(jiǎn)單,但其用處非常大,使用也比較廣泛。比如每次都執行一些相同的命令,您一定會(huì )覺(jué)得非常麻煩,而放在批處理文件中執行的話(huà)則輕松得多。AUTOEXEC.BAT就是一個(gè)特殊的批處理文件,它在DOS的啟動(dòng)時(shí)自動(dòng)運行,在系統的配置中發(fā)揮著(zhù)非常大的作用。因此,要學(xué)好DOS,就要學(xué)好批處理文件。下面介紹批處理文件的命令及其使用。
DOS自帶的批處理命令:
@:將這個(gè)符號放在批文件中其它命令的前面,運行時(shí)將不顯示命令本身。
如@ECHO OFF命令就在批文件首經(jīng)常用到。
CALL:從一個(gè)批文件中調用另一個(gè)批文件,調用完后繼續執行原來(lái)的批文件。
用法:CALL [批文件名]
注:也可以使用COMMAND /C命令完成同樣的操作。
CHOICE:選擇命令。這是一個(gè)DOS外部命令,但它主要用在批文件中。
CHOICE命令執行后將提示可選擇的項目,這時(shí)通過(guò)一個(gè)按鍵來(lái)選則。
用法:CHOICE:[/C[:]按鍵表] [/N] [/S] [/T[:]選擇值,秒數] [顯示文本]
其中,/C表示可選則的按鍵,/N表示不要顯示提示信息,/S表示大小寫(xiě)字符敏感方式,/T表示若在批定的時(shí)間內沒(méi)有選則的話(huà),自動(dòng)執行/C中定義的某個(gè)選擇值。顯示文本是CHOICE命令執行時(shí)的提示信息。選擇結果將用ERRORLEVEL值來(lái)表示。
ECHO:顯示指定的信息。通常顯示在屏幕上。
如ECHO Hello將在屏幕上顯示Hello的字樣。
另外,ECHO ON|OFF用來(lái)設置在批文件執行時(shí)是否顯示命令本身。而ECHO OFF與@的意思一樣,但它是一個(gè)單獨的命令,而不能像@那樣放在其它命令之前。
FOR:對于指定的文件運行相應的命令。
大家知道,DOS下許多命令支持通配符,如?和*,可以一次指定一批文件,非常方便。然而,并非所有的DOS命令都支持通配符,如TYPE(文件內容顯示命令)就不支持。有了FOR命令就沒(méi)有關(guān)系了,利于它可以使TYPE命令可以一次顯示多個(gè)文件。
用法:FOR %變量名 IN (文件集) DO 命令 [命令參數]
注:以上是FOR命令的固定形式,IN和DO的位置必須正確,否則將提示語(yǔ)法錯誤。
如FOR %F IN (*.*) DO TYPE %F命令就可以實(shí)現TYPE命令一次顯示多個(gè)文件。
注:%F是變量名,也可用%G等代替,但前后必須一致。在批文件中用%%F代替。
GOTO:轉到批文件內部的某個(gè)標號下執行。
大家知道,在編程中往往需要重復或跳轉到某個(gè)地方繼續執行,如BASIC語(yǔ)言中的GOTO命令。批文件中的GOTO命令也可以完成類(lèi)似的功能。
用法:GOTO [標號名]
其中,標號名是可以隨意設置的,如Hello等。設置標號用“:“符號,如“:Hello“,這時(shí)用GOTO Hello命令將轉到“:Hello“所在的位置繼續執行批文件。
IF:條件判斷命令。這是一項很有用的批處理命令。
用法1:IF [NOT] EXIST 文件名 命令 [命令參數]
意義:如果[不]存在某個(gè)文件將執行某個(gè)命令。
用法2:IF [NOT] ERRORLEVEL 錯誤返回代號 命令 [命令參數]
意義:如果錯誤返回代號[不]大于或等于指定的代號將執行某個(gè)命令。
其中,ERRORLEVEL表示錯誤返回代號,很有用。對于很多DOS命令,由于執行的結果不同(如執行成功,執行失敗,或被用戶(hù)中斷等),這些命令會(huì )返回不同的代號,以表示不同的結果。IF ERRORLEVEL命令就根據這個(gè)不同結果而產(chǎn)生的不同代號來(lái)執行不同的命令,通常用在某條命令之后。如IF ERRORLEVEL 1 ECHO OK!表示如果當前的錯誤返回代號大于或等于1時(shí)將在屏幕上顯示“OK!“的字樣。
用法3:IF [NOT] 字符串1==字符串2 命令 [命令參數]
意義:當字符串1和字符串2[不]相等的時(shí)候執行某個(gè)命令。
PAUSE:暫停批文件的執行,并顯示“按任意鍵繼續“的字樣。
REM:添加注解。用于增加文件可讀性,將不被執行。也可以用::來(lái)代替。
SHIFT:在批文件中改變可替換參數的位置。
可替換參數是一種特殊的參數,只能用在批文件中。這些參數是由使用者在執行批處理命令時(shí)輸入的。比如,我們執行DIR /S /W命令,其中DIR是命令名,/S和/W是它的執行參數。在批文件中,這些命令參數將被分別賦予到可替換參數中,如/S就成的%1,/W就可了%2,以至類(lèi)推,而命令本身則被賦予%0中。批文件就是利用可替換參數對執行時(shí)輸入的參數來(lái)進(jìn)行操作的。比如現在有個(gè)批處理文件叫MYFILE.BAT,在命令行下執行MYFILE.BAT YES,于是%0的值就是MYFILE.BAT,%1的值就是“YES“,可以在此批文件中用IF等命令判斷出%1等參數的值,然后根據這些值的不同執行不同的操作,如IF “%1“==“YES“ GOTO YES。
SHIFT命令不帶任何參數,執行結果是將%0的值換成原%1的值,而原%1的值變成的原%2的值,以此類(lèi)推。注意它的不可逆轉性。因為批處理文件執行時(shí)的運行參數可能很多,可能會(huì )超過(guò)10個(gè),而可替換參數只能從%0到%9,若想取得%9以后的參數值,只能使用SHIFT命令。這時(shí),整個(gè)參數列將向前推。
以上是DOS的自帶批處理命令,可以看出,這些命令是非常少的,若要編寫(xiě)較復雜的程序,用以上的命令顯然不可能實(shí)現。這時(shí)就需要其它實(shí)用的批處理工具了,著(zhù)名且實(shí)用的有TESTIF,STRING,ASET,BATCHMAN,WBAT等,均可在“DOS軟件分類(lèi)下載“中的“腳本工具“中下載。在批處理文件中使用以上的工具可以實(shí)現非常強大的功能,甚至可以完成許多高級語(yǔ)言程序的功能。所以,如果您想編者按寫(xiě)批處理文件的話(huà),它們是您不錯的選擇,不僅有詳細的文檔,而且還在不斷發(fā)展中。
下面就要談批處理文件的制作了。其實(shí)制作批處理文件并不難,只要掌握了方法就行了。隨著(zhù)您操作次數的增多,您會(huì )覺(jué)得越來(lái)越容易的。
首先使用一個(gè)文本編輯器,如DOS自帶的EDIT命令或其它的編輯工具,如PEDIT等新建一個(gè)空白文件(當然,用COPY CON命令直接創(chuàng )建也行),然后在其中根據您想完成的功能輸入批處理命令。如果您只是想執行一些的DOS命令的集合,則按順序在每行輸入一個(gè)DOS命令就行了。但如果您是想完成一些更復雜的操作,就需要以上的批處理命令或上述的批處理工具了。
以下是我原來(lái)所編的一個(gè)從1%慢慢增加到100%的批處理小程序,大家可以用作參考,以編寫(xiě)自己的程序。
@echo off
break off
cls
set c=0
writext 10 1 Wait...
be delay 4
:loop
writext 10 9 %c%%%completed.
count c
if not %c%==101 goto loop
echo.
set c=
kpush /f
break on
其中,我用到了WRITEXT,COUNT,BE和KPUSH,這些都是批處理工具。WRITEXT是ECHO的增強工具,可以自定義顯示的效果。COUNT是變量的計算工具,如原來(lái)C的值為1,執行COUNT C后C的值就為2。BE是個(gè)強大的批處理增強工具,在Norton Utilties 8.0中帶有。KPUSH是鍵盤(pán)緩沖工具。
總之,利用批處理命令和批處理增強工具,我們可以編出許多強大的批處理文件來(lái),大家不妨一試。
DOS未公開(kāi)命令與參數
DOS系統中有許多未公開(kāi)的命令與參數。由于DOS的種類(lèi)很多,所以下面僅以MS-DOS為例,介紹一下常用命令中的未公開(kāi)的命令與參數。
DOS未公開(kāi)命令:
TRUENAME:用于顯示實(shí)際的路徑,對SUBST等命令很有用。
INSTALLHIGH:用在CONFIG.SYS中,將文件調入UMB。
LOGO和COMMENT:僅用在DOS7中的CONFIG.SYS中,用法未知。
DOS未公開(kāi)參數:
COMMAND /F 使Fail作為Abort,Retry,Fail中的默認選項。
COMMAND /D 在DOS5中是禁止AUTOEXEC.BAT自動(dòng)執行;在6.0+版本中是禁止/F參數。
COMMAND /Z 顯示ERRORLEVEL(錯誤返回代碼)信息。
COMMAND /T 在DOS7.x中強制將COMMAND.COM永久性調入常規內存。
FORMAT /AUTOTEST 自動(dòng)完成格式化過(guò)程。
FORMAT /BACKUP 自動(dòng)完成格式化過(guò)程,并提示輸入卷標。
FORMAT /SELECT 只在磁盤(pán)上備份系統區數據,相當于MIRROR程序。
FORMAT /SELECT /U 將引導區和文件分配表用F6H填之。
FORMAT /Z:n 設置FAT32分區上的簇大小。
FDISK /MBR 重寫(xiě)硬盤(pán)主引導記錄。
FDISK /CMBR drive 重寫(xiě)指定驅動(dòng)器上的主引導記錄。
FDISK /PRI:size 創(chuàng )建主分區。
FDISK /EXT:size 創(chuàng )建擴展分區。
FDISK /LOG:size 在擴展分區上創(chuàng )建邏輯驅動(dòng)器。
FDISK /PRMT|/Q 提示行動(dòng)/安靜模式。
FDISK /PARTN 將分區表信息保存到PARTSAV.FIL中。
FDISK /ACTOK 用于DOS7中,跳過(guò)完整性測試。
FDISK /FPRMT 用于DOS7中,自動(dòng)采用FAT32,并跳過(guò)提示信息。