




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一節(jié)常用批處理內(nèi)部命令簡介
批處理定義:顧名思義,批處理文件是將一系列命令按一定的順序集合為?個可執(zhí)行的文本
文件,其擴展名為BAT或者CMD。這些命令統(tǒng)稱批處理命令。
小知識:可以在鍵盤上按下Ctrl+C組合鍵來強行終止?個批處理的執(zhí)行過程。
了解了大概意思后,我們正式開始學(xué)習(xí).先看一個簡單的例子!
@echooff
echo"歡迎來到非常BAT!"
pause
把上面的3條命令保存為文件test.bat或者test.cmd然后執(zhí)行,
他就會在屏幕上顯示以下二行話:
歡迎來到非常BAT!
請按任意鍵繼續(xù)...
這就是一個簡單批處理文件了,這個批處理文件一共就用了2條命令"echo"和"pause"還
有一個特殊符號"@"
從上面這個簡單的批處理中,我們可以發(fā)現(xiàn)其實批處理就是運用一些含有特殊意義的符號利
一些完成指定功能的命令組合而成,那么在批處理中有多少這樣的特殊符號和功能命令呢?
我們現(xiàn)在就來仔細了解一下一些最常用的!
(以下內(nèi)容來源網(wǎng)絡(luò),請各位仔細閱讀,好進入下節(jié)的實例說明)
批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息)
1、REM和::
2、ECHO和@
3、PAUSE
4、ERRORLEVEL
5、TITLE
6、COLOR
7->mode配置系統(tǒng)設(shè)備
8、GOTO和:
9、FIND
10.START
11>assoc和ftype
12、pushd和popd
13、CALL
14、shift
15、IF
16、setlocal與變量延遲
介紹命令
1、REM和::
REM為注釋命令,一般用來給程序加上注解,該命令后的內(nèi)容不被執(zhí)行,但能回顯。
其次,::也可以起到rem的注釋作用,而且更簡潔有效;但有兩點需要注意:
第一,任何以冒號:開頭的字符行,在批處理中都被視作標(biāo)號,而直接忽略其后的所有內(nèi)容。
有效標(biāo)號:冒號后緊跟一個以字母數(shù)字開頭的字符串,goto語句可以識別。
無效標(biāo)號:冒號后緊跟一個非字母數(shù)字的一個特殊符號,goto無法識別的標(biāo)號,可以起到注
釋作用,所以::常被用作注釋符號,其實:+也可起注釋作用。
第二,與rem不同的是,::后的字符行在執(zhí)行時不會回顯,無論是否用echoon打開命令行回
顯狀態(tài),因為命令解釋器不認為他是一個有效的命令行,就此點來看,rem在某些場合下將
比::更為適用;另夕卜,rem可以用于config.sys文件中。
2、ECHO和@
打開回顯或關(guān)閉回顯功能,或顯示消息。如果沒有任何參數(shù),echo命令將顯示當(dāng)前回顯設(shè)
置。
@字符放在命令前將關(guān)閉該命令回顯,無論此時echo是否為打開狀態(tài)。
語法:
echo[{on|off}][message]
echo.#此用法將顯示一空行,相當(dāng)于回車,非常有用。
執(zhí)行echooff將關(guān)閉回顯,它后面的所有命令都不顯示命令本身,只顯示執(zhí)行后的結(jié)果,除
非執(zhí)行echoon命令。
執(zhí)行@echooff不但關(guān)閉以后命令的回顯,連echoo年命令本身也不顯示了。
通常以@echooff作為批處理程序的首行。
一般用ECHOMESSAGE來顯示一個特定的消息。
例:
@Echooff
Echohello
Pause
運行顯示:hello
3、PAUSE
PAUSE,玩游戲的人都知道,暫停的意思
在這里就是停止系統(tǒng)命令的執(zhí)行并顯示下面的內(nèi)容。
例:
PAUSE
運行顯示:
請按任意鍵繼續(xù)...
要顯示其他提示語,可以這樣用:
Echo其他提示語&pause>nul
4、errorlevel
程序返回碼
echo%errorlevel%
每個命令運行結(jié)束,可以用這個命令行格式查看返回碼
用于判斷剛才的命令是否執(zhí)行成功
默認值為0,一般命令執(zhí)行出錯會設(shè)errorlevel為1
5、title
設(shè)置cmd窗口的標(biāo)題
title新標(biāo)題#可以看到cmd窗口的標(biāo)題欄變了
6、COLOR
設(shè)置默認的控制臺前景和背景顏色。
COLOR[attr]
attr指定控制臺輸出的顏色屬性
顏色屬性由兩個十六進制數(shù)字指定-第一個為背景,第二個則為
前景。每個數(shù)字可以為以下任何值之一:
0=黑色8=灰色
1=藍色9=淡藍色
2=綠色A=淡綠色
3=湖藍色8=淡淺綠色
4=紅色C=淡紅色
5=紫色D=淡紫色
6=黃色E=淡黃色
7=白色F=亮白色
如果沒有給定任何參數(shù),該命令會將顏色還原到CMD.EXE啟動時
的顏色。這個值來自當(dāng)前控制臺窗口、“開關(guān)或
DefaultColor注冊表值。
如果用相同的前景和背景顏色來執(zhí)行COLOR命令,COLOR命令
會將ERRORLEVEL設(shè)置為建
例如:"COLORfc"在亮白色上產(chǎn)生亮紅色
7、mode配置系統(tǒng)設(shè)備
配置系統(tǒng)設(shè)備。
串行口:MODECOMm[:][BAUD=b][PARlTY=p][DATA=d][STOP=s]
[to=on|off][xon=on|ofl][odsr=on|off]
[octs=on|off][dtr=on|off]hs]
[rts=on|off]hs|tg][idsr=on|oft]
設(shè)備狀態(tài):MODE[device][/STATUS]
打印重定向:MODELPTn[:]=COMm[:]
選定代碼頁:MODECON[:]CPSELECT=yyy
代碼頁狀態(tài):MODECON[:]CP[/STATUS]
顯示模式:MODECON[:][COLS=c][LINES=n]
擊鍵率:MODECON[:][RATE=rDELAY=d]
例:
modeconcols=l13lines=15&color9f
此命令設(shè)置DOS窗口大?。?5行,113列
8、GOTO和:
GOTO會點編程的朋友就會知道這是跳轉(zhuǎn)的意思。
在批處理中允許以“:XXX”來構(gòu)建一個標(biāo)號,然后用GOTOXXX跳轉(zhuǎn)到標(biāo)號:XXX處,然后
執(zhí)行標(biāo)號后的命令。
例:
if{%1}={}gotonoparms
if"%2"=""gotonoparms
標(biāo)簽的名字可以隨便起,但是最好是有意義的字符串啦,前加個冒號用來表示這個字符串是
標(biāo)簽,goto命令就是根據(jù)這個冒號(:)來尋找下一步跳到到那里。最好有一些說明這樣你
別人看起來才會理解你的意圖啊。
例:
@echooff
:start
set/avar+=l
echo%var%
if%var%leq3GOTOstart
pause
運行顯示:
1
2
3
4
9、find
在文件中搜索字符串。
FIND[/V][/C][/N][/I][/OFF[LINE]]"string"[[drive:][path]filename[...]]
/V顯示所有未包含指定字符串的行。
/C僅顯示包含字符串的行數(shù)。
/N顯示行號。
/I搜索字符串時忽略大小寫。
/OFF[LINE]不要跳過具有脫機屬性集的文件。
"string"指定要搜索的文字串,
[drive:][path]filename
指定要搜索的文件。
如果沒有指定路徑,F(xiàn)IND將搜索鍵入的或者由另一命令產(chǎn)生的文字。
Find常和type命令結(jié)合使用
Type[drive:][path]filename|find"string”[>tmpfile]#挑選包含string的行
Type[drive:][path]filename|find/v"string"#剔除文件中包含string的行
Type[drive:][path]filename|find/c#顯示文件行數(shù)
以上用法將去除find命令自帶的提示語(文件名提示)
例:
@echooff
echo111>test.txt
echo222?test.txt
findMlll"test.txt
deltest.txt
pause
運行顯示如下:
-------TEST.TXT
111
請按任意鍵繼續(xù)...
例:
@echooff
echo111>test.txt
echo222?test.txt
typetest.txt|find"11ln
deltest.txt
pause
運行顯示如下:
111
清按任意鍵繼續(xù)...
10、start命令
批處理中調(diào)用外部程序的命令(該外部程序在新窗口中運行,批處理程序繼續(xù)往下執(zhí)行,不
理會外部程序的運行狀況),如果直接運行外部程序則必須等外部程序完成后才繼續(xù)執(zhí)行剩
下的指令
例:startexplorerd:\
調(diào)用圖形界面打開D盤
11>assoc和ftype
文件關(guān)聯(lián)
assoc設(shè)置,文件擴展名,關(guān)聯(lián),關(guān)聯(lián)到,文件類型'
ftype設(shè)置,文件類型,關(guān)聯(lián),關(guān)聯(lián)到執(zhí)行程序和參數(shù)’
當(dāng)你雙擊一個.txt文件時,windows并不是根據(jù).txt直接判斷用notepad.exe打開
而是先判斷.txt屬于txtfiQ文件類型'
再調(diào)用txtfile關(guān)聯(lián)的命令行txtfile=%SystcmRoot%\system32\NOTEPAD.EXE%1
可以在”文件夾選項"一"文件類型"里修改這2種關(guān)聯(lián)
assoc#顯示所有'文件擴展名'關(guān)聯(lián)
assoc.txt#顯示.txt代表的'文件類型二結(jié)果顯示.txt=txtfile
assoc.doc#顯示.doc代表的‘文件類型',結(jié)果顯示.doc=Word.Document.8
assoc.exe#顯示.exe代表的‘文件類型',結(jié)果顯示,exe=exefile
ftype#顯示所有墳:件類型,關(guān)聯(lián)
ftypeexefile#顯示exefile類型關(guān)聯(lián)的命令行,結(jié)果顯示exefile="%l"%*
assoc.txt=Word.Document.8
設(shè)置.txt為word類型的文檔,可以看至(txt文件的圖標(biāo)都變了
assoc,txt=txtfile
恢復(fù).txt的正確關(guān)聯(lián)
ftypeexefile="%l"%*
恢復(fù)exefile的正確關(guān)聯(lián)
如果該關(guān)聯(lián)已經(jīng)被破壞,可以運行,再輸入這條命令
12、pushd和popd
切換當(dāng)前目錄
@echooff
c:&cd\&mdmp3#在C:\建立mp3文件夾
mdd:\mp4#在D:\建立mp4文件夾
cd/dd:\mp4#更改當(dāng)前目錄為d:\mp4
pushdc:\mp3#保存當(dāng)前目錄,并切換當(dāng)前目錄為c:\mp3
popd#恢復(fù)當(dāng)前目錄為剛才保存的d:\mp4
一般用處不大,在當(dāng)前目錄名不確定時,會有點幫助。(dos編程中很有用)
13、CALL
CALL命令可以在批處理執(zhí)行過程中調(diào)用另一個批處理,當(dāng)另一個批處理執(zhí)行完后,再繼續(xù)
執(zhí)行原來的批處理
CALL[drive:][path]filename[batch-parameters]
調(diào)用的其它批處理程序。filename參數(shù)必須具有.bat或.cmd擴展名。
CALL:labelarguments
調(diào)用本文件內(nèi)命令段,相當(dāng)于子程序。被調(diào)用的命令段以標(biāo)簽:label開頭
以命令goto:eof結(jié)尾。
另外,批腳本文本參數(shù)參照(%0、%1、等等)已如下改變:
批腳本里的%*指出所有的參數(shù)(如%1%2%3%4%5...)
批參數(shù)(%n)的替代已被增強。您可以使用以下語法:(看不明白的直接運行后面的例子)
%~1-刪除引號("),擴充%1
%~fl-將%1擴充到一個完全合格的路徑名
%~dl-僅將%1擴充到一個驅(qū)動器號
%~pl-僅將%1擴充到一個路徑
%~nl-僅將%1擴充到一個文件名
%~xl-僅將%1擴充到一個文件擴展名
%~sl-擴充的路徑指含有短名
%~al-將%1擴充到文件屬性
%~tl-將%1擴充到文件的日期/時間
%~zl-將%1擴充到文件的大小
%~$PATH:1-查找列在PATH環(huán)境變量的目錄,并將%1
擴充到找到的第一個完全合格的名稱。如果環(huán)境
變量名未被定義,或者沒有找到文件,此組合鍵會
擴充到空字符串
可以組合修定符來取得多重結(jié)果:
%~dpl-只將%1擴展到驅(qū)動器號和路徑
%~nxl-只將%1擴展到文件名和擴展名
%~dp$PATH:l-在列在PATH環(huán)境變量中的目錄里查找%1,
并擴展到找到的第一個文件的驅(qū)動器號和路徑。
%?他al-將%1擴展到類似DIR的輸出行。
在上面的例子中,%1和PATH可以被其他有效數(shù)值替換。
%~語法被一個有效參數(shù)號碼終止。%~修定符不能跟%*使用
注意:參數(shù)擴充時不理會參數(shù)所代表的文件是否真實存在,均以當(dāng)前目錄進行擴展
要理解上面的知識,下面的例子很關(guān)鍵。
例:
@echooff
Echo產(chǎn)生一個臨時文件>tmp.txt
Rem下行先保存當(dāng)前目錄,再將c:\windows設(shè)為當(dāng)前目錄
pushdc:\windows
Call:subtmp.txt
Rem下行恢復(fù)前次的當(dāng)前目錄
Popd
Call:subtmp.txt
pause
Deltmp.txt
:sub
Echo刪除引號:31
Echo擴充到路徑:%~fl
Echo擴充到一個驅(qū)動器號:%-dl
Echo擴充到一個路徑:%~pl
氏ho擴充到一個文件名:%~nl
Echo擴充到一個文件擴展名:%~xl
Echo擴充的路徑指含有短名:%~sl
Echo擴充到文件屬性:%~al
Echo擴充到文件的日期/時間:%~tl
Echo擴充到文件的大小:%~zl
Echo擴展到驅(qū)動器號和路徑:%~dpl
Echo擴展到文件名和擴展名:%~nxl
Echo擴展到類似DIR的輸出行:
Echo.
Goto:eof
14、shift
更改批處理文件中可替換參數(shù)的位置。
SHIFT[/n]
如果命令擴展名被啟用,SHIFT命令支持/n命令行開關(guān);該命令行開關(guān)告訴
命令從第n個參數(shù)開始移位;n介于零和八之間。例如:
SHIFT/2
會將%3移位到%2,將%4移位到%3,等等;并且不影響%0和%1。
15、IF
IF條件判斷語句,語法格式如下:
IF[NOT]ERRORLEVELnumbercommand
IF[NOT]stringl=string2command
IF[NOT]EXISTfilenamecommand
下面逐一介紹,更詳細的分析請看后面章節(jié)。
(1)IF[NOT]ERRORLEVELnumbercommand
IFERRORLEVEL這個句子必須放在某?個命令的后面,執(zhí)行命令后由IFERRORLEVEL來
判斷命令的返回值。
Number的數(shù)字取值范圍0?255,判斷時值的排列順序應(yīng)該由大到小。返回的值大于等于指
定的值時,條件成立
例:
@echooff
dirc:
rem退出代碼為>=1就跳至標(biāo)題1處執(zhí)行,>=0就跳至標(biāo)題0處執(zhí)行
IFERRORLEVEL1goto1
IFERRORLEVEL0goto0
Rem上面的兩行不可交換位置,否則失敗了也顯示成功。
:0
echo命令執(zhí)行成功!
Rem程序執(zhí)行完畢跳至標(biāo)題exit處退出
gotoexit
:1
echo命令執(zhí)行失??!
Rem程序執(zhí)行完畢跳至標(biāo)題exit處退出
gotoexit
:exit
pause
運行顯示:命令執(zhí)行成功!
⑵IF[NOT]stringl==string2command
string1和string2都為字符的數(shù)據(jù),英文內(nèi)字符的大小寫將看作不同,這個條件中的等于號
必須是兩個(絕對相等的意思)
條件相等后即執(zhí)行后面的command
檢測當(dāng)前變量的值做出判斷,為了防止字符串中含有空格,可用以下格式
if[NOT]{stringl}=={string2}command
if[NOT][stringl]=[string2]command
if[NOT]“stringl''=="string2"command
這種寫法實際上將括號或引號當(dāng)成字符串的一部分了,只要等號左右兩邊致就行了,比如
下面的寫法就不行:
if{stringl}==[string2]command
⑶IF[NOT]EXISTfilenamecommand
EXISTfilename為文件或目錄存在的意思
echooff
IFEXISTautoexec.batecho文件存在!
IFnotEXISTautoexec.batecho文件不存在!
這個批處理大家可以放在C盤和D盤分別執(zhí)行,看看效果
16、setlocal與變量延遲
本條內(nèi)容引用[英雄出品]的批處理教程:
要想進階,變量延遲是必過的一關(guān)!所以這一部分希望你能認真看。
為了更好的說明問題,我們先引入一個例子。
例1:
@echooff
seta=4
seta=5&echo%a%
pause
結(jié)果:4
解說:為什么是4而不是5呢?在echo之前明明已經(jīng)把變量a的值改成5了?
讓我們先了解一下批處理運行命令的機制:
批處理讀取命令時是按行讀取的(另外例如for命令等,其后用一對圓括號閉合的所有語句
也當(dāng)作一行),在
處理之前要完成必要的預(yù)處理工作,這其中就包括對該行命令中的變量賦值。我們現(xiàn)在分析
一下例1,批處理
在運行到這句"seta=5&echo%a%”之前,先把這一句整句讀取并做了預(yù)處理——對變量a
賦了值,那么%a%當(dāng)然就是4了!(沒有為什么,批處理就是這樣做的。)
而為了能夠感知環(huán)境變量的動態(tài)變化,批處理設(shè)計了變量延遲。簡單來說,在讀取了一條完
整的語句之后,不
立即對該行的變量賦值,而會在某個單條語句執(zhí)行之前再進行賦值,也就是說“延遲”了對變
量的賦值。
那么如何開啟變量延遲呢?變量延遲又需要注意什么呢?舉個例子說明一下:
例2:
@echooff
setlocalenablcdclayedexpansion
seta=4
seta=5&echo!a!
pause
結(jié)果:5
解說:啟動了變量延遲,得到了正確答案。變量延遲的啟動語句是“setlocal
cnablcdelayedexpansion^^,并且變量要用,一對嘆號”!!”括起來(注意要用英文的嘆號),否則
就沒有變量延遲的效果。
分析一下例2,首先“setlocalenabledelayedexpansion”開啟變量延遲,然后“seta=4”先給變量
a賦值為
4,“seta=5&echo!a!”這句是給變量a賦值為5并輸出(由于啟動了變量延遲,所以批處理
能夠感知到動態(tài)變化,即不是先給該行變量賦值,而是在運行過程中給變量賦值,因此此時
a的值就是5了)。
再舉一個例子鞏固一下。
例3:
@echooff
setlocalenablcdclayedexpansion
for/I%%iin(1,1,5)do(
seta=%%i
echo!a!
)
pause
結(jié)果:
1
2
3
4
5
解說:本例開啟了變量延遲并用“!!”將變量擴起來,因此得到我們預(yù)期的結(jié)果。如果不用變
量延遲會出現(xiàn)什
么結(jié)果呢?結(jié)果是這樣的:
ECHO處于關(guān)閉狀態(tài)。
ECHO處于關(guān)閉狀態(tài)。
ECHO處于關(guān)閉狀態(tài)。
ECHO處于關(guān)閉狀態(tài)。
ECHO處于關(guān)閉狀態(tài)。
即沒有感知到fbr語句中的動態(tài)變化。
第二節(jié)常用特殊符號
1、@命令行回顯屏蔽符
2、%批處理變量引導(dǎo)符
3、>重定向符
4、?重定向符
5、<、>&、<&重定向符
6、|命令管道符
7、八轉(zhuǎn)義字符
8、&組合命令
9、&&組合命令
10>||組合命令
11>""字符串界定符
12、,逗號
13、;分號
14、()括號
15、!感嘆號
16、批處理中可能會見到的其它特殊標(biāo)記符:(略)
CR(OD)命令行結(jié)束符
Escape(lB)ANSI轉(zhuǎn)義字符引導(dǎo)符
Space(20)常用的參數(shù)界定符
Tab(09);=不常用的參數(shù)界定符
+COPY命令文件連接符
*?文件通配符
/參數(shù)開關(guān)引導(dǎo)符
:批處理標(biāo)簽引導(dǎo)符
廢話少說,開講了
1、@命令行回顯屏蔽符
這個字符在批處理中的意思是關(guān)閉當(dāng)前行的回顯。我們從前兒課知道
ECHOOFF可以關(guān)閉掉整個批處理命令的回顯,但不能關(guān)掉ECHOOFF這個命令,現(xiàn)在我
們在ECHOOFF這個命令前加個@,就可以達到所有命令均不回顯的要求
2、%批處理變量引導(dǎo)符
這個百分號嚴(yán)格來說是算不上命令的,它只是批處理中的參數(shù)而已(多個%一起使用的情況
除外,以后還將詳細介紹)。
引用變量用%var%,調(diào)用程序外部參數(shù)用%1至%9等等
%0%1%2%3%4%5%6%7%8%9%*為命令行傳遞給批處理的參數(shù)
%0批處理文件本身,包括完整的路徑和擴展名
%1第一個參數(shù)
%9第九個參數(shù)
%*從第一個參數(shù)開始的所有參數(shù)
參數(shù)%0具有特殊的功能,可以調(diào)用批處理自身,以達到批處理本身循環(huán)的目的,也可以復(fù)
制文件自身等等。
例:最簡單的復(fù)制文件自身的方法
copy%0d:\wind.bat
3、>重定向符
輸出重定向命令
這個字符的意思是傳遞并且覆蓋,他所起的作用是將運行的結(jié)果傳遞到后面的范圍(后邊可
以是文件,也可以是默認的系統(tǒng)控制臺)
在NT系列命令行中,重定向的作用范圍由整個命令行轉(zhuǎn)變?yōu)閱蝹€命令語句,受到了命令分
隔符&,&&』和語句塊的制約限制。
比如:
使用命令:echohello>l.txt將建立文件l.txt,內(nèi)容為“hello"(注意行尾有一空格)
使用命令:echohelloA.txt將建立文件l.txt,內(nèi)容為“hello"(注意行尾沒有空格)4、?重
定向符
輸出重定向命令
這個符號的作用和,有點類似,但他們的區(qū)別是>>是傳遞并在文件的末尾追加,而〉是覆蓋
用法同上
同樣拿l.txt做例子
使用命令:
echohello>l.txt
echoworld?l.txt
這時候l.txt內(nèi)容如下:
hello
world
5、<、>&、<&重定向符
這三個命令也是管道命令,但它們一般不常用,你只需要知道一下就ok了,當(dāng)然如果想仔
細研究的話,可以自己查一下資料。(本人已查過,網(wǎng)上也查不到相關(guān)資料)
<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入。
@echooff
echo2005-05-01>temp.txt
date<temp.txt
deltemp.txt
這樣就可以不等待輸入直接修改當(dāng)前II期
>&.將一個句柄的輸出寫入到另一個句柄的輸入中。
<&,剛好和>&相反,從一個句柄讀取輸入并將其寫入到另一個句柄輸出中。
常用句柄:0、1、2,未定義句柄:3—9
l>nul表示禁止輸出正確的信息
2>nul表示禁止輸出錯誤信息。
其中的1與2都是代表某個數(shù)據(jù)流輸入輸出的地址(NTCMD稱之為句柄,MSDOS稱之為
設(shè)備)。
句柄0:標(biāo)準(zhǔn)輸入stdin,鍵盤輸入
句柄1:標(biāo)準(zhǔn)輸出stdout,輸出到命令提示符窗口(console,代碼為CON)
句柄2:標(biāo)準(zhǔn)錯誤stderr,輸出到命令提示符窗口(console,代碼為CON)
其中的stdin可被〈重定向,stdout可被〉、?重定向,而stderr在DOS下不可直接重定向,
只有通過ctty或其它命令將系統(tǒng)控制權(quán)轉(zhuǎn)交給其它設(shè)備的方式,來間接完成。
6、|命令管道符
格式:第一條命令|第二條命令[|第三條命令…]
將第一條命令的結(jié)果作為第二條命令的參數(shù)來使用,記得在unix中這種方式很常見。
例如:
dirc:\|find"txt"
以上命令是:查找C:'所有,并發(fā)現(xiàn)TXT字符串。
FIND的功能請用FIND/?自行查看
在不使format的自動格式化參數(shù)時,我是這樣來自動格式化A盤的
echoy|fbrmata:/s/q/v:system
用過fbrmat的都知道,再格盤時要輸入y來確認是否格盤,這個命令前加上echoy并用|字
符來將echoy的結(jié)果傳給fonnat命令
從而達到自動輸入y的目的
(這條命令有危害性,測試時請慎重)
7、八轉(zhuǎn)義字符
八是對特殊符號&的前導(dǎo)字符,在命令中他將以上3個符號的特殊功能去掉,僅僅只把他
們當(dāng)成符號而不使用他們的特殊意義。
比如
echotestA>1.txt
結(jié)果則是:test〉1.txt
他沒有追加在l.txt里,呵呵。只是顯示了出來
另外,此轉(zhuǎn)義字符還可以用作續(xù)行符號。
舉個簡單的例子:
@echooff
echo英雄八
是八
好A
男人
pause
不用多說,自己試一下就明白了。
8、&組合命令
語法:第一條命令&第二條命令[&第三條命令…]
&、&&、||為組合命令,顧名思義,就是可以把多個命令組合起來當(dāng)一個命令來執(zhí)行。這在
批處理腳本里是允許的,而且用的非常廣泛。因為批處理認行不認命令數(shù)目。
這個符號允許在一行中使用2個以上不同的命令,當(dāng)?shù)谝粋€命令執(zhí)行失敗了,也不影響后邊
的命令執(zhí)行。
這里&兩邊的命令是順序執(zhí)行的,從前往后執(zhí)行。
比如:
dirz:\&diry:\&dirc:\
以上命令會連續(xù)顯示z,y,c盤的內(nèi)容,不理會該盤是否存在
9,&&組合命令
語法:第一條命令&&第二條命令[&&第三條命令…]
用這種方法可以同時執(zhí)行多條命令,當(dāng)碰到執(zhí)行出錯的命令后將不執(zhí)行后面的命令,如果」
直沒有出錯則一直執(zhí)行完所有命令
這個命令和上邊的類似,但區(qū)別是,第一個命令失敗時,后邊的命令也不會執(zhí)行
dirz:\&&diry:\&&dirc:\
10、||組合命令
語法:第一條命令||第二條命令[||第三條命令…]
用這種方法可以同時執(zhí)行多條命令,當(dāng)一條命令失敗后才執(zhí)行第二條命令,當(dāng)碰到執(zhí)行正確
的命令后將不執(zhí)行后面的命令,如果沒有出現(xiàn)正確的命令則一直執(zhí)行完所有命令;
提示:組合命令和重定向命令一起使用必須注意優(yōu)先級
管道命令的優(yōu)先級高于重定向命令,重定向命令的優(yōu)先級高于組合命令
問題:把C盤和D盤的文件和文件夾列出到a.txt文件中。你將如何來搞定這道題?有朋友
說,這還不是很easy的問題嗎?同時執(zhí)行兩個dir,然后把得到的結(jié)果,到a.txt里就ok了嘛,
看例:
dirc:\&&dird:\>a.txt
仔細研究一下這句執(zhí)行后的結(jié)果,看看是否能達到題目的要求!錯了!這樣執(zhí)行后a.txt里
只有D盤的信息!為什么?就因為這里&&命令和>命令不能同時出現(xiàn)一個句子里(批處理
把一行看成一個句子)??!組合命令&&的優(yōu)先級沒有管道命令〉的優(yōu)先級高(自己總結(jié)的,
不妥的地方請指正)!所以這句在執(zhí)行時將本行分成這兩部分:dirc:\和dird:\>a.txt,而并
不是如你想的這兩部分:dirc:\&&dir&\和>a.txt。要使用組合命令&&達到題目的要求,必
須得這么寫:
dirc:\>a.txt&&dird:\?a.txt
這樣,依據(jù)優(yōu)先級高低,DOS將把這句話分成以下兩部分:dirc:\>a.txt和dird:\>>a.txt。
例十八中的幾句的差別比較特殊,值得好好研究體會一下。
當(dāng)然這里還可以利用&命令(自己想一下道理哦):
dirc:\>a.txt&dird:\?a.txt
IK""字符串界定符
雙引號允許在字符串中包含空格,進入一個特殊目錄可以用如下方法
cd"programfiles"
cdprogra-l
cdpro*
以上三種方法都可以進入programfiles這個H錄
12、,逗號
逗號相當(dāng)于空格,在某些情況下可以用來當(dāng)做空格使
比如
dir,c:\
13、;分號
分號,當(dāng)命令相同時、可以將不同目標(biāo)用;來隔離,但執(zhí)行效果不變,如執(zhí)行過程中發(fā)生錯
誤,則只返回錯誤報告,但程序仍會執(zhí)行。(有人說不會繼續(xù)執(zhí)行,其實測試一下就知道了)
比如:
dirc:\;d:\;e:\;z:\
以上命令相當(dāng)于
dirc:\
dird:\
dire:\
dirf:\
如果其中z盤不存在,運行顯示:系統(tǒng)找不到指定的路徑。然后終止命令的執(zhí)行。
例:dirc:\;d:\;e:\l.txt
以上命令相當(dāng)于
dirc:\
dird:\
dire:\l.txt
其中文件e:\l.txt不存在,但e盤存在,有錯誤提示,但命令仍會執(zhí)行。
為什么?如果目標(biāo)路徑不存在,則終止執(zhí)行;如果路徑存在,文件不存在,則繼續(xù)執(zhí)行。
就說這些了!各位有什么意見請回貼!有什么疑問請到BAT交流區(qū)發(fā)貼!下一節(jié)改進!
14、()括號
小括號在批處理編程中有特殊的作用,左右括號必須成對使用,括號中可以包括多行命令,
這些命令將被看成一個整體,視為一條命令行。
括號在for語句和if語句中常見,用來嵌套使用循環(huán)或條件語句,其實括號0也可以單獨使
用,請看例子。
例:
命令:echo1&echo2&echo3
可以寫成:
(
echo1
echo2
echo3
)
上面兩種寫法效果一樣,這兩種寫法都被視為是一條命令行。
注意:這種多條命令被視為一條命令行時,如果其中有變量,就涉及到變量延遲的問題。
15、!感嘆號
沒啥說的,在變量延遲問題中,用來表示變量,即%var%應(yīng)該表示為!var!,請看前面的setlocal
命令介紹。
顧名思義,批處理就是把一批或者說是一條條命令放在一個文本里,然后批量執(zhí)行!執(zhí)行這
一批命令的文件的擴展名是BAT或者CMD,把任何一批命令放入在有這樣擴展名的文件里,
執(zhí)行時里面的命令就會??條條的執(zhí)行完,當(dāng)然
我們還可以在其中加入一些邏輯判斷的語句,讓里面的命令在滿足一定條件時執(zhí)行指定的命
令.
了解了大概意思后,我們正式開始學(xué)習(xí).先看一個簡單的例子!
@echooff
echo"歡迎來到非常BAT!"
pause
把上面的3條命令保存為test.bat或者test.cmd然后執(zhí)行,他就會在屏幕上顯示二行話:"歡迎
來到非常BAT!請按任意鍵繼續(xù)..
這就是一個簡單批處理文件了,我們來分析一下.
這個批處理文件一共就用了2條命令"echo"和"pause"還有一個特殊符號"@"
@符號在批處理中的作用是關(guān)閉當(dāng)前行命令的回顯,也就是不顯示執(zhí)行的是什么命令,只顯示
命令的結(jié)果!
你可以執(zhí)行下面這個批處理文件來理解,保存為*.bat或者*CMD
@echo你好
echo你好
@pause
echo命令的作用有兩個,一個是在CMD上回顯一行內(nèi)容.如:echo"歡迎來到非常BAT!",還一
個是關(guān)閉命令的回顯:echooff
echooff的作用就相當(dāng)于在每條命令前面加一個@符號,這樣所有的命令將只會顯示結(jié)果不
顯示命令.
我們在echo。汗這命令前加一個@符號是為了不讓echooff這條命令本身顯示出來,讓批處理
更完美!
pause命令就是暫停的意思,防止批處理執(zhí)行完后直接退出!執(zhí)行pause命令后會自動在CMD
里顯示"請按任意鍵繼續(xù)..."這樣一行話!
從上面這個簡單的批處理中,我們可以發(fā)現(xiàn)其實批處理就是運用一些含有特殊意義的符號和
一些完成指定功能的命令組合而成,那么
在批處理中有多少這樣的特殊符號和功能命令呢?我們現(xiàn)在就來仔細了解一下一些最常用的!
(以下內(nèi)容來源網(wǎng)絡(luò),請各位仔細閱讀,好進入下節(jié)的實例說明)
批處理的常見命令
REM
ECHO
GOTO
CALL
PAUSE
IF
還有(FOR,SETLOCAL,SHIFT)這兒個命令比較難,不適合寫在基礎(chǔ)篇,以后說明!
批處理定義:顧名思義,批處理文件是將一系列命令按一定的順序集合為一個可執(zhí)行的文本
文件,其擴展名為BAT。
這些命令統(tǒng)稱批處理命令。
介紹命令
1、REM
REM是個注釋命令,?般用來給程序加上注解,該命令后的內(nèi)容在程序執(zhí)行時,將不會被
顯示和執(zhí)行。
例:REM這個命令就是注釋
這一句將不會被執(zhí)行
2,ECHO
ECHO是一個回顯命令,主要參數(shù)有OFF和ON。一般用ECHOMESSAGE來顯示一個特
定的消息。
例:
Echooff
Rem以上代表關(guān)閉回顯(就是不顯示所執(zhí)行的命令)
Echo這個就是消息(message)
Rem以上代表顯示“這就是消息(message)”這列字符
咱們來看看執(zhí)行結(jié)果:
3、GOTO
GOTO會點編程的朋友就會知道這是跳轉(zhuǎn)的意思。
在批處理中允許以“:XXX”來構(gòu)建―個標(biāo)號,然后用GOTOXXX直接來執(zhí)行標(biāo)號后的命令。
例:
:lable
REM上面就是名為LABEL的標(biāo)號
DIRC:\
DIRD:\
GOTOtable
REM以上程序跳轉(zhuǎn)標(biāo)號LABEL處繼續(xù)執(zhí)行
咱們來看看結(jié)果:
4、CALL
CALL命令可以在批處理執(zhí)行過程中調(diào)用另一個批處理,當(dāng)另一個批處理執(zhí)行完后,再繼續(xù)
執(zhí)行原來的批處理
例:
創(chuàng)建一個2.BAT,內(nèi)容如下
ECHO這就是2的內(nèi)容
創(chuàng)建一個1.BAT,內(nèi)容如下
ECHO這是1的內(nèi)容
CALL2.BAT
ECHO1和2的內(nèi)容全部顯示完成。
執(zhí)行1.BAT,來看看結(jié)果:
5、PAUSE
PAUSE,玩游戲的人都知道,暫停的意思
在這里就是停止系統(tǒng)命令的執(zhí)行并顯示下面的內(nèi)容。
例:
PAUSE
6、IF
IF條件判斷語句,語法格式如下:
IF[NOT]ERRORLEVELnumbercommand
IF[NOT]stringl==string2command
IF[NOT]EXISTfilenamecommand
解釋下:
[NOT]:將返回結(jié)果取反值,就是“如果沒有”的意思
ERRORLEVEL:
是命令執(zhí)行完成后返回的退出值
Number:
退出值的數(shù)字取值范圍0~255,判斷時值的排列順序應(yīng)該由大到小。返回的值大于等于指定
的值時,條件成立
stringl==string2:
stringl和string2都為字符的數(shù)據(jù),英文內(nèi)字符的大小寫將看作不同,這個條件中的等于號
必須是兩個(絕對相等的意思)
條件相等后即執(zhí)行后面的command
EXISTfilename:
為文件或目錄存在的意思
IFERRORLEVEL這個句子必須放在某?個命令的后面,執(zhí)行命令后由IFERRORLEVEL
來判斷命令的返回值。
例:
(1)
IF[NOT]ERRORLEVELnumbercommand
檢測命令執(zhí)行完后的返回值做出判斷
echooff
dirz:
rem如果退出代碼為1(不成功)就跳至標(biāo)題1處執(zhí)行
IFERRORLEVEL1goto1
REM如果退出代碼為0(成功)就跳至標(biāo)題0處執(zhí)行
IFERRORLEVEL0goto0
:0
echo命令執(zhí)行成功!
Rem程序執(zhí)行完畢跳至標(biāo)題exit處退出
gotoexit
echo命令執(zhí)行失?。?/p>
Rem程序執(zhí)行完畢跳至標(biāo)題exit處退出
gotoexit
:exit
Rem這里是程序的出口
(2)IFstringl=string2command
檢測當(dāng)前變量的值做出判斷
ECHOOFF
IF1==2gotono
Echo變量相等!
gotoexit
:no
echo變量不相等
gotoexit
:exit
看看效果,敲擊這個命令Lbat數(shù)字
(3)IF[NOT]EXISTfilenamecommand
發(fā)現(xiàn)特定的文件做出判斷
echooff
IFnotEXISTautoexec.batgoto1
echo文件存在成功!
gotoexit
:1
echo文件不存在失??!
gotoexit
:exit
這個批處理大家可以放在C盤和D盤分別執(zhí)行,看看效果
特殊符號:
1.@
2.>
3.>>
4.1
5.A
6.&
7.&&
8.""
9.,
10.;
廢話少說,開講了
一、@
這個字符在批處理中的意思是關(guān)閉當(dāng)前行的回顯。我們從前幾課知道
ECHOOFF可以關(guān)閉掉整個批處理命令的回顯,但不能關(guān)掉ECHOOFF這個命令,現(xiàn)在我
們在ECHOOFF這個命令前加個@,就可以達到所
有命令均不回顯的要求
l.bat
echooff
dird:\
2.bat
@echooff
dird:\
二、>;
這個字符的意思是傳遞并且覆蓋,他所起的作用是將運行的回顯結(jié)果傳遞到后面的范圍(后
邊可以是文件,也可以是默認的系統(tǒng)控
制臺)
比如:
文件l.txt的文件內(nèi)容是:
1+1
使用命令:dir*.txt>l.txt
這時候l.txt內(nèi)容如下
驅(qū)動器C中的卷沒有標(biāo)簽。
卷的序列號是3827-1BDD
C:\的目錄
2004-05-2500:5717,755,907Log.txt
2004-05-2615:213l.txt
2004-05-2615:2102.txt
3個文件17,755,910字節(jié)
0個目錄339,111,936可用字節(jié)
三、>>
這個符號的作用和>有點類似,但他們的區(qū)別是>>是傳遞并在文件的末尾追加,而
>是覆蓋
用法同上
同樣拿l.txt做例子
內(nèi)容是1+1
使用命令:dir*.txt>>l.txt
咱們來看看顯示的結(jié)果如何
四、|
這是一個管道傳輸命令,意思是將上一命令執(zhí)行的結(jié)果傳到下一個命令去處理
例如:
dirc:\|find"txt"
以匕命令是:查找C:\所有,并發(fā)現(xiàn)TXT字符串。
FIND的功能請用FIND/?自行查看
在不使fonnat的自動格式化參數(shù)時,我是這樣來自動格式化A盤的
echoy|fbrmata:/s/q/v:system
用過format的都知道,再格盤時要輸入y來確認是否格盤,這個命令前加上echoy并用|字
符來將echoy的結(jié)果傳給format命令
從而達到自動輸入y的目的
(這條命令有危害性,測試時請慎重)
五、八
人是對特殊符號的前導(dǎo)字符,在命令中他將以上3個符號的特殊功能去掉,
僅僅只把他們當(dāng)成符號而不使用他們的特殊意
義。
比如
echotestA>l.txt
結(jié)果則是
他沒有追加在l.txt里,呵呵。只是顯示了出來
六、&
這個符號允許在一行中使用2個以上不同的命令,當(dāng)?shù)谝粋€命令執(zhí)行失敗了,也不影響后邊
的命令執(zhí)行。
比如:
dirz:\&diry:\&dirc:\
以上命令會連續(xù)顯示z,y,c盤的內(nèi)容,不理會該盤是否存在
七、&&
這個命令和上邊的類似,但區(qū)別是,第一個命令失敗時、后邊的命令也不會執(zhí)行
dirz:\&&diry:\&&dirc:\
八、""
雙引號允許在字符串中包含空格,進入一個特殊目錄可以用如下方法
cd"programfiles"
cdprogra-1
cdpro*
以上三種方法都可以進入programfiles這個目錄
九、,
逗號相當(dāng)于空格,在某些情況卜一“,”可以用來當(dāng)做空格使
比如
dir,c:\
十、;
分號,當(dāng)命令相同時,可以將不同目標(biāo)用;來隔離,但執(zhí)行效果不變,如執(zhí)行過程中發(fā)生錯
誤,則只返回錯誤報告,但程序還是會
執(zhí)行。
比如:
dirc:\;d:\e:\;f:\
以上命令相當(dāng)于
dirc:\
dird:\
dire:\
dirf:\
看了看第一節(jié)的東西,發(fā)現(xiàn)那些簡單的命令都有詳細解釋,實在想不出什么更好的東西來解釋
他們,就直接來一個"FOR命令詳解"在其中運用這些東西來解釋吧!
講FOR之前呢,咋先告訴各位新手朋友,如果你有什么命令不懂,直接在CMD下面輸入:
name/?這樣的格式來看系統(tǒng)給出的幫助文件,比如for/?就會把FOR命令的幫助全部顯示出
來!當(dāng)然許多菜鳥同志都看不懂?…所以才會有那么多批處理文章!!!!俺也照顧菜鳥,把FOR命
令用我自己的方式說明下!
正式開始:
FOR這條命令基本上都被用來處理文本,我們這次除了要說他處理文本的作用外還要講他的
其他一些好用的功能!
看看他的基本格式(這里我引用的是批處理中的格式,直接在命令行只需要一個%號)
FOR參數(shù)%%變量名IN(相關(guān)文件或命令)DO執(zhí)行的命令
參數(shù):FOR有4個參數(shù)/d/I/r/f他們的作用我在下面用例子解釋
%%變量名:這個變量名可以是小寫a-z或者大寫A-Z,他們區(qū)分大小寫哦?
FOR會把每個讀取到的值給他!
IN:命令的格式,照寫就是了!
(相關(guān)文件或命令):FOR要把什么東西讀取然后賦值給變量,不懂的話看下面的例子
do:命令的格式,照寫就是了!
執(zhí)行的命令:對每個變量的值要執(zhí)行什么操作就寫在這.
看不懂我的這些說明,可以在CMD輸入fbr/?看系統(tǒng)提供的幫助!我這里也給出來吧,大家對
八昭、、
FOR%%variableIN(set)DOcommand[command-parameters]
%%variable指定一個單一字母可替換的參數(shù)。
(set)指定一個或一組文件??梢允褂猛ㄅ浞?/p>
command指定對每個文件執(zhí)行的命令。
command-parameters
為特定命令指定參數(shù)或命令行開關(guān)。
現(xiàn)在開始講每個參數(shù)的意思
/d
僅為目錄
如果Set(也就是我上面寫的”相關(guān)文件或命令")包含通配符(*和?),將對與Set相匹配的每
個目錄(而不是指定目錄中的文件組)執(zhí)行指定的Command。
這個參數(shù)其實我也沒弄太懂…有錯誤希望各位糾正!
系統(tǒng)幫助的格式:FOR/D%%variableIN(set)DOcommand
他主要用于目錄搜索,不會搜索文件,看這樣的例子
@echooff
fbr/d%%iin(*)do@echo%%i
pause
把他保存放在C盤根目錄執(zhí)行,就會把C盤目錄下的全部目錄名字打印出來,而文件名字一個
也不顯示!
在來一個,比如我們要把當(dāng)前路徑下文件夾的名字只有1-3個字母的打出來
@echooff
fbr/d%%iin(???)do@echo%%i
pause
這樣的話如果你當(dāng)前目錄下有目錄名字只有1-3個字母的,就會顯示出來,沒有就不顯示了
這里解釋下*號和?號的作用,*號表示任意N個字符,而?號只表示任意一個字符
知道作用了,給大家個思考題目!
@echooff
for/d%%iin(window?)do@echo%%i
pause
保存到C盤下執(zhí)行,會顯示什么呢?自己看吧!
/D參數(shù)只能顯示當(dāng)前目錄下的目錄名字,這個大家要注意!
/R
遞歸
進入根目錄樹[Drive:]Path,在樹的每個目錄中執(zhí)行fbr語句。如果在/R后沒有指定目錄,則
認為是當(dāng)前目錄。如果Set只是一個句點(.),則只枚舉目錄樹。
系統(tǒng)幫助的格式:FOR/R[[drive:]path]%%variableIN(set)DOcommand
上面我們知道,/D只能顯示當(dāng)前路徑下的目錄名字,那么現(xiàn)在這個/R也是和目錄有關(guān),他能干
嘛呢?放心他比/D強大多了!
他可以把當(dāng)前或者你指定路徑下的文件名字全部讀取,注意是文件名字,有什么用看例子!
@echooff
for/rc:\%%iin(*.exe)do@echo%%i
pause
咋們把這個BAT保存到D盤隨便哪里然后執(zhí)行,我會就會看到,他把C盤根目錄,和每個目錄
的子目錄下面全部的EXE文件都列出來了!!!!
再來一個
@echooff
for/r%%iin(*.exe)do@echo%%i
pause
參數(shù)不一樣了吧!這個命令前面沒加那個C:\也就是搜索路徑,這樣他就會以當(dāng)前目錄為搜索
路徑,比如你這個BAT你把他防災(zāi)d:\test目錄下執(zhí)行,那么他就會把D:\test目錄和他卜面的子
目錄的全部EXE文件列出來!!!
這個參數(shù)大家因該理解了吧!還是滿好玩的命令!
/L
迭代數(shù)值范圍
使用迭代變量設(shè)置起始值(Start#),然后逐步執(zhí)行一組范圍的值,直到該值超過所設(shè)置的終止
值(End#)。/L將通過對Start#與End#進行比較來執(zhí)行迭代變量。如果Start#小于End#,就會
執(zhí)行該命令。如果迭代變量超過End#,則命令解釋程序退出此循環(huán)。還可以使用負的Step#
以遞減數(shù)值的方式逐步執(zhí)行此范圍內(nèi)的值。例如,(1,1,5)生成序歹U12345,而(5,-1,1)則生
成序列(54321)(>語法是:
系統(tǒng)幫助的格式:fbr/L%%Variablein(Start#,Step#,End#)doCommand
看著這說明有點暈吧!咋們看例子就不暈了!
@echooff
for/I%%iin(1,1,5)do@echo%%i
pause
保存執(zhí)行看效果,他會打印從12345這樣5個數(shù)字
(1,1,5)這個參數(shù)也就是表示從1開始每次加1直到5終止!
大會暈,就打印個數(shù)字有P用...好的滿足大家,看這個例子
@echooff
for/I%%iin(1,1,5)dostartcmd
pause
執(zhí)行后是不是嚇了一跳,怎么多了5個CMD窗口,呵呵!如果把那個(1,1,5)改成(1,1,65535)會有
什么結(jié)果,我先告訴大家,會打開65535個CMD窗口….這么多你不死機算你強!
當(dāng)然我們也可以把那個startcmd改成md%%i這樣就會建立指定個目錄了!!!名字為1-65535
看完這個被我賦予破壞性質(zhì)的參數(shù)后,我們來看最后一個參數(shù)
/f
'迭代及文件解析
使用文件解析來處理命令輸出、字符串及文件內(nèi)容。使用迭代變量定義要檢查的內(nèi)容或字符
串,并使用各種ParsingKeywords選項進一步修改解析方式。使用ParsingKeywords令牌選
項指定哪些令牌應(yīng)該作為迭代變量傳遞。請注意:在沒有使用令牌選項時:/F將只檢查第
一個令牌。
文件解析過程包括讀取輸出、字符串或文件內(nèi)容,將其分成獨立的文本行以及再將暫行解析
成零個或更多個令牌。然后通過設(shè)置為令牌的迭代變量值,調(diào)用fbr循環(huán)。默認情況下,/F
傳遞每個文件每一行的第一個空白分隔符號。跳過空行。
系統(tǒng)幫助的格式:
for/F"ParsingKeywords"%%Variablein(FileNameSet)doCommand
有沒有發(fā)現(xiàn)這個參數(shù)說明比上面幾個都多…沒辦法,人們用FOR命令主要也就是用/f參
數(shù),FOR的主場啊!大家得好好看!
先來解釋下那個多出來的"ParsingKeywords"
他表示4個參數(shù)
eol=c-指個行注釋字符的結(jié)尾(就一個)
skip=n-指在文件開始時忽略的行數(shù)。
delims=xxx-指分隔符集。這個替換了空格和跳格鍵的
默認分隔符集。
tokcns=x,y,m-n-指每行的哪一-個符號被傳遞到每個迭代
的for本身。這會導(dǎo)致額外變量名稱的分配。m-n
格式為一個范圍。通過nth符號指定mth。如果
符號字符串中的最后一個字符星號,
那么額外的變量將在最后一個符號解析之后
分配并接受行的保留文本。
usebackq-指定新語法已在下類情況中使用:
在作為命令執(zhí)行一個后引號的字符串并且一個單
引號字符為文字字符串命令并允許在filenameset
中使用雙引號擴起文件名稱。
先別暈了!我這就舉個例子幫助大家來理解這些參數(shù)!
usebackq這個參數(shù)不用理解了,系統(tǒng)默認會給我們加上!
為了能使用這個例子,我們先新建一個文本文件,在里面打上這些內(nèi)容保存為testtxt:
;郁悶啊!
您好!歡迎來到,非常批處理
我們的網(wǎng)站
完畢!
@echooff
FOR/F"eol=;tokens=ldclims="%%iin(test.txt)do@echo%%i
pause
我們把這個BAT保存到和你的test.txt相同的目錄下面然后執(zhí)行
我們會看到屏幕上會顯示
您好!
我們的網(wǎng)站
完畢!
為什么會這樣?我來解釋
這個命令會讀取在當(dāng)前目錄下名為test.txt文件中的內(nèi)容,將每一行的內(nèi)容賦值給變量%%i,忽
略掉以;號開頭的行,并且以空格做為分隔符號,打印每行以空格做分隔符號的第一列
結(jié)果就是這樣了!!
如果改成
當(dāng)然我們想要把全部文件內(nèi)容直接打印出來就可以這樣
@echooff
FOR/F"delims="%%iin(test.txt)do@echo%%i
pause
另外/F參數(shù)還可以以輸出命令的結(jié)果看這個例子
@echooff
FOR/F"delims="%%iin('netuser')do@echo%%i
pause
這樣你本機全部帳號名字就出來了把擴號內(nèi)的內(nèi)容用兩個單引號引起來就表示那個當(dāng)命令
執(zhí)行,FOR會返回命令的每行結(jié)果,加那個“delims="是為了讓我空格的行能整行顯示出來,不
加就只顯示空格左邊一列!
基本上講完了FOR的基本用法了…如果你看過FOR的系統(tǒng)幫助,你會發(fā)現(xiàn)他下面還有一些特
定義的變量,這些我先不講.大家因該都累了吧!你不累我累啊….
本節(jié)到此結(jié)速,希望對各位有所幫助!
FOR命令中有一些變量,他們的用法許多新手朋友還不太了解,今天給大家講解他們的用法!
先把FOR的變量全部列出來:
T-刪除任何引號("),擴展%I
%~fl-將%I擴展到一個完全合格的路徑名
%~dl-僅將%I擴展到一個驅(qū)動器號
%~pl-僅將%I擴展到一個路徑
%~nl-僅將%I擴展到一個文件名
%~xl-僅將%I擴展到一個文件擴展名
%~sl-擴展的路徑只含有短名
%~al-將%I擴展到文件的文件屬性
%~tl-將%1擴展到文件的日期/時間
%-zl-將%I擴展到文件的大小
%~$PATH:I-查找列在路徑環(huán)境變量的目錄,并將%I擴展
到找到的第一個完全合格的名稱。如果環(huán)境變量名
未被定義,或者沒有找到文件,此組合鍵會擴展到
空字符串
我們可以看到每行都有一個大寫字母T,這個I其實就是我們在FOR帶入的變量,我們FOR
語句代入的變量名是什么,這里就寫什么.
比如:FOR/F%%zIN('set')DO@echo%%z
這里我們代入的變量名是z那么我們就要把那個I改成z,例如%改為%-也
至于前面的%?p這樣的內(nèi)容就是語法了!
好開始講解:
~1-刪除任何引號("),擴展%I
這個變量的作用就如他的說明,刪除引號!
我們來看這個例子:
首先我們在桌面建立一個名字為temp.txt文本文件,在里面輸入這些內(nèi)容
"1111
2222"
"3333"
44"44
然后在建立個BAT文件代碼如下:
FOR/F"delims="%%iIN(temp.txt)DO@echo%%-i
pause
執(zhí)行后,我們看CMD的回顯如下:
1111
2222"
3333
44"44
和之前temp.txt中的內(nèi)容對比一下,我們會發(fā)現(xiàn)第一行和第三行的引號都消失了,這就是刪除
引號?i的作用了!
刪除引號規(guī)則如下(BAT兄補充!)
1、若字符串首尾同時存在引號,則刪除首尾的引號;
2、若字符串尾不存在引號,則刪除字符串首的引號;
3、如果字符串中間存
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版六年級語文上冊課程教學(xué)計劃
- 個性化定制包裝設(shè)計-全面剖析
- 2025年玻璃清潔器項目投資風(fēng)險評估報告
- 2025年重組水蛭素單克隆抗體項目投資風(fēng)險評估報告
- 初中英語能力提升工作計劃
- 環(huán)境保護項目風(fēng)險管理計劃概述
- 五年級數(shù)學(xué)上冊跨學(xué)科融合教學(xué)計劃
- 光伏發(fā)電項目施工組織計劃
- 近視眼防控科技研發(fā)計劃
- 部編版四年級上冊道法跨學(xué)科融合計劃
- 木工內(nèi)架合同范本
- 污水處理站操作人員安全培訓(xùn)手冊
- 2024年濟寧市惠達投資有限公司招聘筆試沖刺題(帶答案解析)
- 2024內(nèi)蒙古自治區(qū)公務(wù)員考試數(shù)量關(guān)系專項練習(xí)題含答案(鞏固)
- 2024年山西林業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 安全生產(chǎn)責(zé)任制考核制度和考核表(完整版)
- 旅游概論(劉偉主編)(全國高職高專旅游類“十二五”示范教材) 全套課件(上)
- 19J102-1 19G613混凝土小型空心砌塊墻體建筑與結(jié)構(gòu)構(gòu)造
- 貴州省情知識考試總題庫(含答案)
- 女職工權(quán)益保護
- 加油站改造施工方案
評論
0/150
提交評論