




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