2011年11月14日 星期一

[轉貼][分享]基本 DOS 批次處理詳細解說

基本 DOS 批次處理詳細解說

一、echo、@、call、pause、rem 是批次檔最常用的幾個命令,我們就從他們
開始學起
echo 表示顯示此命令後的字元
echo off 表示在此語句後所有運行的命令都不顯示命令列本身
@ 與echo off相象,但它是加在其它命令列的最前面,表示運行時
不顯示命令列本身。
call 調用另一條批次檔(如果直接調用別的批次檔 ,執行完
那條檔後將無法執行當前檔後續命令)
pause 運行此句會暫停,顯示 Press any key to continue... 等待用戶
按任意鍵後繼續
rem 表示此命令後的字元為解釋行,不執行,只是給自己今後查找用的
二、if 、goto 、choice 、for 是批次檔中比較高級的命令,如果這幾個你用
得很熟練,你就是批次檔的專家啦。
if 表示將判斷是否符合規定的條件,從而決定執行不同的命令。 有三種格式:
1、if "參數" == "字串"  待執行的命令
參數如果等於指定的字串,則條件成立,運行命令,否則運行下一句。
(注意是兩個等號)
如:if "%1"=="a" format a:
2、if exist 檔案名  待執行的命令
如果有指定的檔,則條件成立,運行命令,否則運行下一句。
如:if exist config.sys edit config.sys
3、if errorlevel 數位  待執行的命令
如果返回碼等於指定的數字,則條件成立,運行命令,否則運行下一句。
如if errorlevel 2 goto x2  DOS程式運行時都會返回一個數位給DOS,
稱為錯誤碼errorlevel或稱返回碼

goto 批次檔運行到這裡將跳到goto 所指定的標號處,一般與 if 配合使用。
如:
goto end
:end
echo this is the end
: 這是標號字元(所在位是冒號),是用來執行被 goto 跳轉所用的標號字元,
標號所在行是不會被執行,如:
:end 等等...

choice 使用此命令可以讓使用者輸入一個字元,從而運行不同的命令。使用時應該
加/c:參數,c:後應寫提示可輸入的字元,之間無空格。它的返回碼為1234……
如: choice /c:dme defrag,mem,end
將顯示
defrag,mem,end[D,M,E]?
例如,test.bat的內容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag 應先判斷數值最高的錯誤碼
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
此檔運行後,將顯示 defrag,mem,end[D,M,E]? 用戶可選擇d m e ,
然後if語句將作出判斷,d表示執行標號為defrag的程式段,m表示執行
標號為mem的程式段,e表示執行標號為end的程式段,每個程式段最後都
以goto end將程式跳到end標號處,然後程式將顯示good bye,檔結束。

for 迴圈命令,只要條件符合,它將多次執行同一命令。
格式FOR [%%f] in (集合) DO [命令]
只要參數f在指定的集合內,則條件成立,執行命令
如果一條批次檔中有一行:
for %%c in (*.bat *.txt) do type %%c
含義是如果是以bat或txt結尾的檔,則顯示檔的內容。
device和devicehigh
載入一些記憶體駐留程序,用於管理設備。比如記憶體管理程式和
光碟機驅動程式等。
如: device=c:\dos\himem.sys
device=c:\dos\emm386.exe ram
devicehigh=c:\cdrom\cdrom.sys

himem.sys和emm386.exe
DOS只能直接使用640K的記憶體,即基本記憶體,必須依靠其它記憶體管理程式來
使用更多的記憶體,這兩條命令就是最常用的記憶體管理程式。
himem.sys 負責管理擴充記憶體。
emm386.exe 負責管理高端記憶體並在擴充記憶體中類比延伸記憶體供某些軟體使用。
為了使用更多的記憶體,設定檔中應有:
device=c:\dos\himem.sys
device=c:\dos\emm386.exe ram
注意:EMM386.exe 要求先安裝 himem.sys,因而必須確保
安裝 himem.sys 的配置命令在 emm386.exe 之前。
dos=high,umb 這兩個參數也可以分開寫成兩條語句,即:
dos=high
dos=umb
應在config.sys中加入這條命令,這樣會將DOS的系統檔移入高端
記憶體,空出更多的基本記憶體給其它軟體使用。 注意,如果用戶沒有
安裝emm386.exe,umb這個參數是沒有實際意義的
lastdriver lastdriver 規定使用者可以訪問的最大驅動器符數目,也就是DOS所能
識別的最後的驅動器符(字母)。如果設定的驅動器符數目小於本機上
的實際驅動器數,則此lastdriver命令會被忽略掉。缺省的最大驅動
器符數目為本機的實際驅動器數目加一。
:: 二個冒號,它和批次檔中的 rem 含義相同,即注釋
ramdrive.sys 虛擬磁片檔。
只要在 config.sys 中加入 device=ramdrive.sys 就可使用虛擬磁片了
比如:
   device=c:\dos\ramdrive.sys 1024 /e
表示在擴充記憶體中建立 1M 的虛擬磁片。如果加/a參數,則表示在擴充
記憶體中建立虛擬磁片。
%CDROM% %CDROM%是光碟機盤符的變數字串,用它可以把所在的任意光碟機盤符替為
真實盤符, 需要與光碟機驅動模組一同執行,如:
LH \MSCDEX.EXE /D:mscd001 /L:%CDROM%
%RAMD% %RAMD%是隨機虛擬磁片, 此盤創建在擴充記憶體中, 建立此盤的模組就是
ramdrive.sys ,見上面的“虛擬磁片檔”說明。
另外這個虛擬內在還有更強大的虛擬記憶體管理器,可以超過64MB的記憶體
管理,就是 XMSDSK.EXE 與 EMSDSK.EXE,



path 指向路徑命令:
path=c:\dos;c:\windows;c:\ 這條命令就是說,當我們執行一個檔時,
電腦先在目前的目錄下查找這個檔,找到則執行,如果沒有找到,則電腦按照
path命令所指定的目錄順序去查找,先在C盤dos目錄下,然後在windows目錄
下,最後在C盤根目錄下尋找這個檔
edit 編輯命令:
edit w.bat回車(就是編輯 w.bat文件的意思)
ren 改名命令:
例如把abc.txt改成bne.dat,就可以輸入renabc.txtbne.dat。
type 查看命令:
我想知道abc.txt檔的內容,就從鍵盤上輸入typeabc.txt 。
diskcopy 磁片複製命令:
diskcopy命令的格式很簡單:diskcopy 源驅動器名 目的驅動器名。舉個例子來
說,如果要在A驅動器上複製磁片,就輸入:diskcopya:a: (奇怪吧,哪來兩
個A盤,且看下文電腦是如何理解的)。
chkdsk 磁片查看命令:
就輸入chkdskC:
cd 改變目前的目錄命令:
用法,就輸入cd abc
sys 製作DOS系統磁片命令:
用法,就輸入sys a:
copy 拷貝檔命令:
用法,就輸入copy c:\abc.txt a:\
del 刪除檔命令:
用法,就輸入 del c:\abc.txt
deltree 刪除目錄樹命令:
用法,就輸入 deltree c:\abc
dir 查看命令:
用法,就輸入 dir 如:
用法1、dir /w
用法2、dir /p
用法3、dir /w/p
format 格式化磁片命令:
用法1,就輸入format a: (完全格式化不帶任何資訊)
用法2,就輸入format a:/q(快速格式化不帶任何資訊)
用法3,就輸入format a:/s(完全格式化並寫入DOS啟動主文件)
用法4,就輸入format a:/q/s(快速格式化並寫入DOS啟動主文件)
md 建立目錄命令:
用法,就輸入md abc
mem 查看記憶體狀況命令:
用法,就輸入mem
rd 刪除目錄命令:
用法,就輸入rd abc
cls 清屏命令:
用法,就輸入cls
適用場合:螢幕上太亂了,或是螢幕上出現亂碼了,清除螢幕上顯示內容但不影響
電腦內部任何資訊.
move 移動文件與改目錄名:
用法,就輸入c:\>move c:\autoexec.bat c:\old (移動autoexec.bat檔至old目錄下)
用法,就輸入c:\>move c:\config.sys c:\temp (移動config.sys檔至temp目錄下)
more 分屏顯示命令:
用法,就輸入C:\>type msdos.w40 | more
適用場合:當輸出很多一屏顯示不下時採用,幾乎適合所有命令,尤其是type等命令
時很有用。使用more時磁片不能有防寫,也不適合光碟機。
xcopy 拷貝目錄和檔命令:
用法,就輸入xcopy *.* [目錄] /s
適用場合:在進行連同子目錄一起拷貝時很有用,在拷貝大量檔時比COPY命令要快得多 .
attrib 設置檔案屬性命令:
用法1,就輸入attrib +r abc.txt
用法2,就輸入attrib +h *.* /s痖隱含所有檔
參數:
attrib +r或-r [檔案名] 設置檔案屬性是否為唯讀
attrib +h或-h [檔案名] 設置檔案屬性是否隱含
attrib +s或-s [檔案名] 設置檔案屬性是否為系統檔
attrib +a或-a [檔案名] 設置檔案屬性是否為歸檔檔
attrib /s 設置包括子目錄的檔在內的檔案屬性
date 顯示及修改日期命令:
用法,就輸入C:\>date 03-20-2005痖將日期改為2005年3月20日
lable 設置標籤號命令:
用法,就輸入label [盤符] [標籤名] 設定指定盤的標籤
例  子 C:\>label痖 Volume in drive C is WANG
Volume SerialNumber is 2116-1DD0
volume label(11 characters,Enter for none)?
     可以輸入標籤,直接回車後 Delete current volume label (Y/N)?
     按y刪除舊標籤,按n不更改
defrag 磁片磁碟重組命令:
用法,就輸入C:\>defrag
doskey 調用和建立DOS巨集命令命令:
用法,就輸入 doskey /reinstall      重新安裝doskey
doskey/bufsize=       設置緩衝區的大小 doskey /macros        顯示所有doskey巨集 doskey /history    顯示記憶體中所有命令
doskey/insert|overstrike 設置新鍵入的字元是否覆蓋舊的字例  子〕  C:\>DOSKEY痖 C:\>dir
C:\>copyC:\temp\*.* a:
C:\>delc:\temp\*.*
C:\>copyb:\*.* c:\temp
C:\>doskeydi=dir/w/p痖定義di為巨集命令,意思是執行dir/w/p
fdisk 硬碟分區命令:
用法,就輸入fdisk後按回車即可進入提示介面
emm386 擴充記憶體管理命令:
用法 lh [程式]
將程式裝入高端記憶體使用此命令時,config.sys文件中需有下麵兩條語句。
device=emm386.exe dos=umb
lh [程式] /l:區號   將程式裝入指定的umb區
lh /s          一般是由memmaker專用
例子:C:\MOUSE\>lh mouse痖 將滑鼠驅動程式裝入高端記憶體
memmaker 記憶體優化管理命令:
用法,就輸入C:\>memmaker 回車,出現提示一直回車 2. 回車繼續,F3退出
msd 系統檢測命令:
用法,就輸入 C:\>msd 回車後可見到實例
undelete 恢復被刪除的檔命令:
用法,就輸入undelete
undelete /all   恢復檔且不再詢問是否恢復
undelete /list  列可恢復的檔案名
prompt 設置提示符命令:
適用場合:當你厭煩了c:\>的提示符或者您想使您的提示符與眾不同時,您可以
試一試,非常有趣的DOS命令,可以隨時顯示時間與日期。
〔用法〕 prompt $p$g 以目前的目錄名和>號為提示符,這是最常用的提示符 prompt $t 表示時間      prompt $d 表示日期 prompt $$ 表示$ prompt $q 表示=
prompt$v 表示當前版本    prompt $l 表示<
prompt$b 表示| prompt $h 表示退位符 prompt $e 表示Esc代表的字元prompt $_ 表示回車換行
〔例子〕 C:\DOS>prompt wang$g痖將wang>作為提示符 WANG>prompt $t$d$g痖 使用時間、日期和>號做為提示符 0:01:07.77Thu 08-29-1996>prompt $p$g痖 C:\DOS>
restore 恢復已備份的檔命令:
建議:如果以前用backup做過檔案備份,則當原文件損壞時可以用它來恢復
檔,將用backup命令備份的磁片中的檔案修復到另一磁片中,備份磁片中
應有backup.00X和control.00X這兩條文件。
〔用法〕 restore [備份盤符] [目標盤符]
        將備份盤上備份檔案恢復到指定盤上 restore /s     將備份檔案包括子目錄都恢復到指定盤上 restore /p     讓用戶判斷是否恢復檔 restore /b:日期  恢復日期以前的檔 restore /a:日期  恢復日期之後的檔 restore /l:時間  恢復時間之前的檔 restore /e:時間  恢復時間之後的檔 restore /m     只恢復上次備份後修改過的檔 restore /n     只恢復上次備份後已刪除的檔 restore /d     只顯示要恢復的檔案名
〔例子〕 C:\DOS>restore a: c:痖 Insert backup diskette 01 in drive A:
Press anykey to continue . . .
        在A驅中放入第一張備份盤,按任意鍵即可,恢復完第一張後,按順        序放入其它盤即可。         當您用上述命令不能正確恢復檔時請用: C:\DOS>restore a: c:\ /s
time 顯示及修改時間命令:
用法,就輸入time 即可按提示修改,不修改按回車忽略修改
set 設置環境變數命令:
用法,就輸入set [環境變數]=[字串]
例子: C:\>set path=c:\dos 與path c:\dos含義相同, 這條命令常常用在autoexec.bat中
smartdrv 設置磁片加速器命令:
用法,它可以提高硬碟存取速度,最好在autoexec.bat檔中載入吧。
用法: smartdrv /x
     執行並駐留記憶體,開闢磁片加速緩存區,並遮罩所有驅動器緩存,是     較常用的方法(一般用這個命令就夠了) smartdrv /c       將緩存內的資訊都寫入硬碟
smartdrv /e: 數字   設置一次移動的信息量 smartdrv /b: 數位   設置預先讀取的緩衝區大小
append 設置非執行檔的路徑命令:
適用場合: 當您無法在多個目錄中尋找到自己輸入的文稿時,可以試一試這
個命令,用法類似path。
用法: append [路徑];[路徑]
例子: C:\>append c:\test痖 設置尋找非可執行檔路徑為c:\test如果該目錄下有檔1.txt時,在其它目錄下調用1.txt找不到時,可自動尋找到c:\test目錄。 D:\UCDOS>edit 1.txt 可找到C:\test\1.txt文件
debug 程式調試命令:
如果你學過組合語言,那你應該會使用debug,如果沒學過,最好別使用.
用法  debug [檔案名]
diskcomp 比較磁片命令:
適用場合: 比較兩張盤是否相同,沒想到什麼時候會用到,在比較用
diskcopy拷貝的兩張盤,為什麼不用diskcopy/v校驗呢?
〔用法〕diskcomp [盤符1] [盤符2] 比較盤1和盤2
diskcomp /1 只比較磁片的第一面 diskcomp /8 只比較沒磁軌的前8個磁區
〔例子〕C:\>diskcomp a: a:
在同一軟盤機中比較兩張盤 Insert FIRST diskette in drive A:
 放入第一張盤 Press any key to continue . . .
Comparing 80 tracks 18 sectors per track, 2side(s) Insert SECOND diskette in drive A:
 放入第二張盤 Press any key to continue . . . Compare OK
 比較未發現不同 Compare another diskette (Y/N) ?n
 是否比較其它盤,選y繼續比較,選n停
expand 解壓工具命令:
微軟公司軟體原始安裝盤中有許多尾碼以"_"結尾的壓縮檔,可以用它解壓,
解除您因為少數幾個檔丟失造成的麻煩。(Windows下用Winrar就可以解壓)
用法,C:\>expand a:vsafe.co_ c:\dos\vsafe.com

fasthelp 快速顯示説明資訊命令:
用法,在DOS下輸入abc.exe /fasthelp 同/?
fc 文件比較命令:
用法,就輸入fc[檔案名1][檔案名2]比較兩檔的不同參數還有: a c l Lbn n t w nnnn
subst 路徑替換命令:
用法 subst 顯示當前的替代路徑 subst [盤符] [路徑]        將指定的路徑替代盤符,該路徑將作為驅動器使用subst /b         解除替代
〔例子〕C:\DOS>subst a: c:\temp痖用c盤temp目錄替代a盤 C:\>subst a: /d痖     解除替代

沒有留言: