講FOR之前呢,咋先告訴各位新手朋友,如果你有什么命令不懂,直接在CMD下面輸入:
name /? 這樣的格式來(lái)看系統(tǒng)給出的幫助文件,比如for /? 就會(huì)把FOR命令的幫助全部顯示出來(lái)!當(dāng)然許多菜鳥(niǎo)都看不懂....所以才會(huì)有那么多批處理文章!!!!俺也照顧菜鳥(niǎo),把FOR命令用我自己的方式說(shuō)明下!
正式開(kāi)始:
一、基本格式
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一個(gè)單一字母表示可替換的參數(shù)。
(set) 指定一個(gè)或一組文件?梢允褂猛ㄅ浞
command 指定對(duì)每個(gè)文件執(zhí)行的命令。
command-parameters 為特定命令指定參數(shù)或命令行開(kāi)關(guān)。
參數(shù):FOR有4個(gè)參數(shù) /d /l /r /f 他們的作用我在下面用例子解釋
現(xiàn)在開(kāi)始講每個(gè)參數(shù)的意思
二、參數(shù) /d
FOR /D %%variable IN (set) DO command [command-parameters]
如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。
如果 Set (也就是我上面寫(xiě)的 "相關(guān)文件或命令") 包含通配符(* 和 ?),將對(duì)與 Set 相匹配的每個(gè)目錄(而不是指定目錄中的文件組)執(zhí)行指定的 Command。
這個(gè)參數(shù)主要用于目錄搜索,不會(huì)搜索文件,看這樣的例子
?
1
2
3 |
@ echo off for /d %%i in (c:\*) do echo %%i pause |
運(yùn)行會(huì)把C盤(pán)根目錄下的全部目錄名字打印出來(lái),而文件名字一個(gè)也不顯示!
在來(lái)一個(gè),比如我們要把當(dāng)前路徑下文件夾的名字只有1-3個(gè)字母的打出來(lái)
?
1
2
3 |
@ echo off for /d %%i in (???) do echo %%i pause |
這樣的話如果你當(dāng)前目錄下有目錄名字只有1-3個(gè)字母的,就會(huì)顯示出來(lái),沒(méi)有就不顯示了
這里解釋下*號(hào)和?號(hào)的作用,*號(hào)表示任意N個(gè)字符,而?號(hào)只表示任意一個(gè)字符
知道作用了,給大家個(gè)思考題目!
?
1
2
3 |
@ echo off for /d %%i in (window?) do echo %%i pause |
保存到C盤(pán)下執(zhí)行,會(huì)顯示什么呢?自己看吧! 顯示:windows
/D參數(shù)只能顯示當(dāng)前目錄下的目錄名字,這個(gè)大家要注意!
三、參數(shù) /R
FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters]
檢查以 [drive:]path 為根的目錄樹(shù),指向每個(gè)目錄中的FOR 語(yǔ)句。如果在 /R 后沒(méi)有指定目錄,則使用當(dāng)前目錄。如果集僅為一個(gè)單點(diǎn)(.)字符,則枚舉該目錄樹(shù)。
遞歸
上面我們知道,/D只能顯示當(dāng)前路徑下的目錄名字,那么現(xiàn)在這個(gè)/R也是和目錄有關(guān),他能干嘛呢?放心他比/D強(qiáng)大多了!
他可以把當(dāng)前或者你指定路徑下的文件名字全部讀取,注意是文件名字,有什么用看例子!
請(qǐng)注意2點(diǎn):
set中的文件名如果含有通配符(?或*),則列舉/R參數(shù)指定的目錄及其下面的所用子目錄中與set相符合的所有文件,無(wú)相符文件的目錄則不列舉。
相反,如果set中為具體文件名,不含通配符,則枚舉該目錄樹(shù)(即列舉該目錄及其下面的所有子目錄),而不管set中的指定文件是否存在。這與前面所說(shuō)的單點(diǎn)(.)枚舉目錄樹(shù)是一個(gè)道理,單點(diǎn)代表當(dāng)前目錄,也可視為一個(gè)文件。
例:
?
1
2
3 |
@ echo off for / r c:\ %%i in (*.exe) do echo %%i pause |
咱們把這個(gè)BAT保存到D盤(pán)隨便哪里然后執(zhí)行,我會(huì)就會(huì)看到,他把C盤(pán)根目錄,和每個(gè)目錄的子目錄下面全部的EXE文件都列出來(lái)了!!!!
例:
?
1
2
3 |
@ echo off for / r %%i in (*.exe) do @ echo %%i pause |
參數(shù)不一樣了吧!這個(gè)命令前面沒(méi)加那個(gè)C:\也就是搜索路徑,這樣他就會(huì)以當(dāng)前目錄為搜索路徑,比如你這個(gè)BAT你把他放在d:\test目錄下執(zhí)行,那么他就會(huì)把D:\test目錄和他下面的子目錄的全部EXE文件列出來(lái)!!!
例:
?
1
2
3 |
@ echo off for / r c:\ %%i in (boot.ini) do echo %%i pause |
運(yùn)行本例發(fā)現(xiàn)枚舉了c盤(pán)所有目錄,為了只列舉boot.ini存在的目錄,可改成下面這樣:
?
1
2
3 |
@ echo off for / r c:\ %%i in (boot.ini) do if exist %%i echo %%i pause |
用這條命令搜索文件真不錯(cuò)。。。。。。
這個(gè)參數(shù)大家應(yīng)該理解了吧!還是滿好玩的命令!
四、參數(shù) /L
FOR /L %%variable IN (start,step,end) DO command [command-parameters]
該集表示以增量形式從開(kāi)始到結(jié)束的一個(gè)數(shù)字序列。因此,(1,1,5) 將產(chǎn)生序列 1 2 3 4 5,(5,-1,1) 將產(chǎn)生序列 (5 4 3 2 1)。
使用迭代變量設(shè)置起始值 (Start#),然后逐步執(zhí)行一組范圍的值,直到該值超過(guò)所設(shè)置的終止值 (End#)。/L 將通過(guò)對(duì) Start# 與 End# 進(jìn)行比較來(lái)執(zhí)行迭代變量。如果 Start# 小于 End#,就會(huì)執(zhí)行該命令。如果迭代變量超過(guò) End#,則命令解釋程序退出此循環(huán)。還可以使用負(fù)的 Step# 以遞減數(shù)值的方式逐步執(zhí)行此范圍內(nèi)的值。例如,(1,1,5) 生成序列 1 2 3 4 5,而 (5,-1,1) 則生成序列 (5 4 3 2 1)。語(yǔ)法是:
看著這說(shuō)明有點(diǎn)暈吧!咱們看例子就不暈了!
?
1
2
3 |
@ echo off for /l %%i in (1,1,5) do @ echo %%i pause |
2015年全國(guó)職稱計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書(shū)籍 | |
全國(guó)職稱計(jì)算機(jī)考試速成過(guò)關(guān)系列套裝:W .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書(shū)籍 |