华南俳烁实业有限公司

考試首頁(yè) | 考試用書(shū) | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
  當(dāng)前位置:操作系統(tǒng) > DOS > 文章內(nèi)容
  

DOS批處理高級(jí)教程:DOS循環(huán)for命令詳解

 [ 2017年8月25日 ] 【

  講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
首頁(yè) 1 2 尾頁(yè)
本文糾錯(cuò)】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問(wèn)考試網(wǎng) | 復(fù)制本頁(yè)地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見(jiàn)留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved
宁夏| 南雄市| 前郭尔| 德清县| 邵东县| 赞皇县| 巢湖市| 元谋县| 沭阳县| 沈丘县| 瓮安县| 陵水| 留坝县| 田阳县| 顺平县| 开原市| 乌拉特前旗| 拉孜县| 东阿县| 蓬莱市| 建阳市| 新闻| 武城县| 黄龙县| 东至县| 博客| 临澧县| 哈巴河县| 庄浪县| 铜鼓县| 永宁县| 灵丘县| 永泰县| 商丘市| 贵港市| 曲松县| 共和县| 绥德县| 博野县| 甘洛县| 汝南县|