




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
介紹如何寫win下的批處理程序2009-11-12
|
介紹如何寫win下的批處理程序標簽:echo
批處理文件
ucdos
choice
參數(shù)
批處理的介紹
擴展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批處理文件。
首先批處理文件是一個文本文件,這個文件的每一行都是一條DOS命令(大部分時候就好象我們在DOS提示符下執(zhí)行的命令行一樣),你可以使用DOS下的Edit或者Windows的記事本(notepad)等任何文本文件編輯工具創(chuàng)建和修改批處理文件。
其次,批處理文件是一種簡單的程序,可以通過條件語句(if)和流程控制語句(goto)來控制命令運行的流程,在批處理中也可以使用循環(huán)語句(for)來循環(huán)執(zhí)行一條命令。當(dāng)然,批處理文件的編程能力與C語言等編程語句比起來是十分有限的,也是十分不規(guī)范的。批處理的程序語句PATHC:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTools;C:\SYSTOOLS;C:\WINTOOLS;C:\BATCH
LHSMARTDRV.EXE/X
LHDOSKEY.COM/Insert
LHCTMOUSE.EXE
SETTEMP=D:\TEMP
SETTMP=D:\TEMP
批處理的作用
簡單的說,批處理的作用就是自動的連續(xù)執(zhí)行多條命令。
這里先講一個最簡單的應(yīng)用:在啟動wps軟件時,每次都必須執(zhí)行(>前面內(nèi)容表示DOS提示符):
C:\>cdwps
C:\WPS>spdos
C:\WPS>py
C:\WPS>wbx
C:\WPS>wps
如果每次用WPS之前都這樣執(zhí)行一遍,您是不是覺得很麻煩呢?
好了,用批處理,就可以實現(xiàn)將這些麻煩的操作簡單化,首先我們編寫一個runwps.bat批處理文件,內(nèi)容如下:
@echooff
c:
cd\wps
spdos
py
wbx
wps
cd\
以后,我們每次進入wps,只需要運行runwps這個批處理文件即可。
常用命令
echo、@、call、pause、rem(小技巧:用::代替rem)是批處理文件最常用的幾個命令,我們就從他們開始學(xué)起。
echo表示顯示此命令后的字符
echooff表示在此語句后所有運行的命令都不顯示命令行本身
@與echooff相象,但它是加在每個命令行的最前面,表示運行時不顯示這一行的命令行(只能影響當(dāng)前行)。
call調(diào)用另一個批處理文件(如果不用call而直接調(diào)用別的批處理文件,那么執(zhí)行完那個批處理文件后將無法返回當(dāng)前文件并執(zhí)行當(dāng)前文件的后續(xù)命令)。
pause運行此句會暫停批處理的執(zhí)行并在屏幕上顯示Pressanykeytocontinue…的提示,等待用戶按任意鍵后繼續(xù)
rem表示此命令后的字符為解釋行(注釋),不執(zhí)行,只是給自己今后參考用的(相當(dāng)于程序中的注釋)。
例1:用edit編輯a.bat文件,輸入下列內(nèi)容后存盤為c:\a.bat,執(zhí)行該批處理文件后可實現(xiàn):將根目錄中所有文件寫入a.txt中,啟動UCDOS,進入WPS等功能。
批處理文件的內(nèi)容為:命令注釋:
@echooff不顯示后續(xù)命令行及當(dāng)前命令行
dirc:\*.*>a.txt將c盤文件列表寫入a.txt
callc:\ucdos\ucdos.bat調(diào)用ucdos
echo你好顯示”你好”
pause暫停,等待按鍵繼續(xù)
rem準備運行wps注釋:準備運行wps
cducdos進入ucdos目錄
wps運行wps
批處理文件的參數(shù)
批處理文件還可以像C語言的函數(shù)一樣使用參數(shù)(相當(dāng)于DOS命令的命令行參數(shù)),這需要用到一個參數(shù)表示符“%”。
%[1-9]表示參數(shù),參數(shù)是指在運行批處理文件時在文件名后加的以空格(或者Tab)分隔的字符串。變量可以從%0到%9,%0表示批處理命令本身,其它參數(shù)字符串用%1到%9順序表示。
例2:C:根目錄下有一批處理文件名為f.bat,內(nèi)容為:
@echooff
format%1
如果執(zhí)行C:\>fa:
那么在執(zhí)行f.bat時,%1就表示a:,這樣format%1就相當(dāng)于formata:,于是上面的命令運行時實際執(zhí)行的是formata:
例3:C:根目錄下一批處理文件名為t.bat,內(nèi)容為:
@echooff
type%1
type%2
那么運行C:\>ta.txtb.txt
%1:表示a.txt
%2:表示b.txt
于是上面的命令將順序地顯示a.txt和b.txt文件的內(nèi)容。
特殊命令
ifgotochoicefor是批處理文件中比較高級的命令,如果這幾個你用得很熟練,你就是批處理文件的專家啦。
一、if是條件語句,用來判斷是否符合規(guī)定的條件,從而決定執(zhí)行不同的命令。有三種格式:
1、if[not]“參數(shù)”==“字符串”待執(zhí)行的命令
參數(shù)如果等于(not表示不等,下同)指定的字符串,則條件成立,運行命令,否則運行下一句。
例:if“%1″==”a”formata:
2、if[not]exist[路徑\]文件名待執(zhí)行的命令
如果有指定的文件,則條件成立,運行命令,否則運行下一句。
如:ifexistc:\config.systypec:\config.sys
表示如果存在c:\config.sys文件,則顯示它的內(nèi)容。
3、iferrorlevel<數(shù)字>待執(zhí)行的命令
很多DOS程序在運行結(jié)束后會返回一個數(shù)字值用來表示程序運行的結(jié)果(或者狀態(tài)),通過iferrorlevel命令可以判斷程序的返回值,根據(jù)不同的返回值來決定執(zhí)行不同的命令(返回值必須按照從大到小的順序排列)。如果返回值等于指定的數(shù)字,則條件成立,運行命令,否則運行下一句。
如iferrorlevel2gotox2
二、goto批處理文件運行到這里將跳到goto所指定的標號(標號即label,標號用:后跟標準字符串來定義)處,goto語句一般與if配合使用,根據(jù)不同的條件來執(zhí)行不同的命令組。
如:
gotoend
:end
echothisistheend
標號用“:字符串”來定義,標號所在行不被執(zhí)行。
三、choice使用此命令可以讓用戶輸入一個字符(用于選擇),從而根據(jù)用戶的選擇返回不同的errorlevel,然后于iferrorlevel配合,根據(jù)用戶的選擇運行不同的命令。
注意:choice命令為DOS或者Windows系統(tǒng)提供的外部命令,不同版本的choice命令語法會稍有不同,請用choice/?查看用法。
choice的命令語法(該語法為Windows2003中choice命令的語法,其它版本的choice的命令語法與此大同小異):
CHOICE[/Cchoices][/N][/CS][/Ttimeout/Dchoice][/Mtext]
描述:
該工具允許用戶從選擇列表選擇一個項目并返回所選項目的索引。
參數(shù)列表:
/C
choices
指定要創(chuàng)建的選項列表。默認列表是“YN”。
/N
在提示符中隱藏選項列表。提示前面的消息得到顯示,
選項依舊處于啟用狀態(tài)。
/CS
允許選擇分大小寫的選項。在默認情況下,這個工具
是不分大小寫的。
/T
timeout
做出默認選擇之前,暫停的秒數(shù)。可接受的值是從0
到9999。如果指定了0,就不會有暫停,默認選項
會得到選擇。
/D
choice
在nnnn秒之后指定默認選項。字符必須在用/C選
項指定的一組選擇中;同時,必須用/T指定nnnn。
/M
text
指定提示之前要顯示的消息。如果沒有指定,工具只
顯示提示。
/?
顯示幫助消息。
注意:
ERRORLEVEL環(huán)境變量被設(shè)置為從選擇集選擇的鍵索引。列出的第一個選
擇返回1,第二個選擇返回2,等等。如果用戶按的鍵不是有效的選擇,
該工具會發(fā)出警告響聲。如果該工具檢測到錯誤狀態(tài),它會返回255的
ERRORLEVEL值。如果用戶按Ctrl+Break或Ctrl+C鍵,該工具會返回0
的ERRORLEVEL值。在一個批程序中使用ERRORLEVEL參數(shù)時,將參數(shù)降
序排列。
示例:
CHOICE/?
CHOICE/CYNC/M“確認請按Y,否請按N,或者取消請按C。”
CHOICE/T10/Cync/CS/Dy
CHOICE/Cab/M“選項1請選擇a,選項2請選擇b?!?/p>
CHOICE/Cab/N/M“選項1請選擇a,選項2請選擇b?!?/p>
如果我運行命令:CHOICE/CYNC/M“確認請按Y,否請按N,或者取消請按C。”
屏幕上會顯示:
確認請按Y,否請按N,或者取消請按C。[Y,N,C]?
例:test.bat的內(nèi)容如下(注意,用iferrorlevel判斷返回值時,要按返回值從高到低排列):
@echooff
choice/Cdme/M“defrag,mem,end”
iferrorlevel3gotoend
iferrorlevel2gotomem
iferrotlevel1gotodefrag
:defrag
c:\dos\defrag
gotoend
:mem
mem
gotoend
:end
echogoodbye
此批處理運行后,將顯示“defrag,mem,end[D,M,E]?”,用戶可選擇dme,然后if語句根據(jù)用戶的選擇作出判斷,d表示執(zhí)行標號為defrag的程序段,m表示執(zhí)行標號為mem的程序段,e表示執(zhí)行標號為end的程序段,每個程序段最后都以gotoend將程序跳到end標號處,然后程序?qū)@示goodbye,批處理運行結(jié)束。
四、for循環(huán)命令,只要條件符合,它將多次執(zhí)行同一命令。
語法:
對一組文件中的每一個文件執(zhí)行某個特定命令。
FOR%%variableIN(set)DOcommand[command-parameters]
%%variable
指定一個單一字母可替換的參數(shù)。
(set)
指定一個或一組文件??梢允褂猛ㄅ浞?/p>
command
指定對每個文件執(zhí)行的命令。
command-parameters
為特定命令指定參數(shù)或命令行開關(guān)。
例如一個批處理文件中有一行:
for%%cin(*.bat*.txt)dotype%%c
則該命令行會顯示當(dāng)前目錄下所有以bat和txt為擴展名的文件的內(nèi)容。
批處理示例
1.IF-EXIST
1)
首先用記事本在C:\建立一個test1.bat批處理文件,文件內(nèi)容如下:
@echooff
IFEXIST\AUTOEXEC.BATTYPE\AUTOEXEC.BAT
IFNOTEXIST\AUTOEXEC.BATECHO\AUTOEXEC.BATdoesnotexist
然后運行它:
C:\>TEST1.BAT
如果C:\存在AUTOEXEC.BAT文件,那么它的內(nèi)容就會被顯示出來,如果不存在,批處理就會提示你該文件不存在。
2)
接著再建立一個test2.bat文件,內(nèi)容如下:
@ECHOOFF
IFEXIST\%1TYPE\%1
IFNOTEXIST\%1ECHO\%1doesnotexist
執(zhí)行:
C:\>TEST2AUTOEXEC.BAT
該命令運行結(jié)果同上。
說明:
(1)IFEXIST是用來測試文件是否存在的,格式為
IFEXIST[路徑+文件名]命令
(2)test2.bat文件中的%1是參數(shù),DOS允許傳遞9個批參數(shù)信息給批處理文件,分別為%1~%9(%0表示test2命令本身),這有點象編程中的實參和形參的關(guān)系,%1是形參,AUTOEXEC.BAT是實參。
3)更進一步的,建立一個名為TEST3.BAT的文件,內(nèi)容如下:
@echooff
IF“%1″==“A”ECHOXIAO
IF“%2″==“B”ECHOTIAN
IF“%3″==“C”ECHOXIN
如果運行:
C:\>TEST3ABC
屏幕上會顯示:
XIAO
TIAN
XIN
如果運行:
C:\>TEST3AB
屏幕上會顯示
XIAO
TIAN
在這個命令執(zhí)行過程中,DOS會將一個空字符串指定給參數(shù)%3。
2、IF-ERRORLEVEL
建立TEST4.BAT,內(nèi)容如下:
@ECHOOFF
XCOPYC:\AUTOEXEC.BATD:IFERRORLEVEL1ECHO文件拷貝失敗
IFERRORLEVEL0ECHO成功拷貝文件
然后執(zhí)行文件:
C:\>TEST4
如果文件拷貝成功,屏幕就會顯示“成功拷貝文件”,否則就會顯示“文件拷貝失敗”。
IFERRORLEVEL是用來測試它的上一個DOS命令的返回值的,注意只是上一個命令的返回值,而且返回值必須依照從大到小次序順序判斷。
因此下面的批處理文件是錯誤的:
@ECHOOFF
XCOPYC:\AUTOEXEC.BATD:\
IFERRORLEVEL0ECHO成功拷貝文件
IFERRORLEVEL1ECHO未找到拷貝文件
IFERRORLEVEL2ECHO用戶通過ctrl-c中止拷貝操作
IFERRORLEVEL3ECHO預(yù)置錯誤阻止文件拷貝操作
IFERRORLEVEL4ECHO拷貝過程中寫盤錯誤
無論拷貝是否成功,后面的:
未找到拷貝文件
用戶通過ctrl-c中止拷貝操作
預(yù)置錯誤阻止文件拷貝操作
拷貝過程中寫盤錯誤
都將顯示出來。
以下就是幾個常用命令的返回值及其代表的意義:
backup
0備份成功
1未找到備份文件
2文件共享沖突阻止備份完成
3用戶用ctrl-c中止備份
4由于致命的錯誤使備份操作中止
diskcomp
0盤比較相同
1盤比較不同
2用戶通過ctrl-c中止比較操作
3由于致命的錯誤使比較操作中止
4預(yù)置錯誤中止比較
diskcopy
0盤拷貝操作成功
1非致命盤讀/寫錯
2用戶通過ctrl-c結(jié)束拷貝操作
3因致命的處理錯誤使盤拷貝中止
4預(yù)置錯誤阻止拷貝操作
format
0格式化成功
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 航拍項目合作協(xié)議中關(guān)于版權(quán)歸屬與使用范圍的補充條款
- 網(wǎng)紅奶茶店區(qū)域代理銷售及推廣合同
- 老齡公寓專業(yè)管理及社區(qū)服務(wù)委托合同
- 歐洲移民臨時倉儲租賃及倉儲貨物清點協(xié)議
- 短視頻平臺粉絲權(quán)益轉(zhuǎn)移與合規(guī)管理合同
- 互聯(lián)網(wǎng)智能零售平臺供應(yīng)鏈金融解決方案合同
- 醫(yī)療邊緣計算節(jié)點部署與醫(yī)療影像處理服務(wù)合同
- 銷售簽單培訓(xùn)
- 培訓(xùn)班課程介紹策略
- 遺產(chǎn)繼承稅務(wù)代理合同(2篇)
- 職業(yè)升學(xué)就業(yè)協(xié)議書
- 旅行導(dǎo)游協(xié)議書
- 2025年工程管理知識試題及答案
- 2025屆百師聯(lián)盟高三下學(xué)期二輪復(fù)習(xí)聯(lián)考(三)地理試題(含答案)
- 節(jié)目腳本委托合同協(xié)議
- 2024年山東濟南先行投資集團有限責(zé)任公司招聘考試真題
- 江蘇省揚州市邗江區(qū)2025年初三中考一??荚囉⒄Z試題含答案
- 產(chǎn)褥期保健及護理課件
- 陜西省西安市2025屆中考模擬英語檢測試題(附答案)
- 2025-2030消防車產(chǎn)業(yè)規(guī)劃專項研究報告
- 初中英語教輔電子版單選題100道及答案
評論
0/150
提交評論