介紹如何寫win下的批處理程序_第1頁
介紹如何寫win下的批處理程序_第2頁
介紹如何寫win下的批處理程序_第3頁
介紹如何寫win下的批處理程序_第4頁
介紹如何寫win下的批處理程序_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論