「FOR命令詳解【參考僅供】」.doc_第1頁
「FOR命令詳解【參考僅供】」.doc_第2頁
「FOR命令詳解【參考僅供】」.doc_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余5頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

格式:FOR 參數(shù) %變量名 IN (相關(guān)文件或命令) DO 執(zhí)行的命令作用:對(duì)一個(gè)或一組文件,字符串或命令結(jié)果中的每一個(gè)對(duì)象執(zhí)行特定命令,達(dá)到我們想要的結(jié)果。注意:在批處理文件中使用 FOR 命令時(shí),指定變量請(qǐng)使用 %variable,而不要用 %variable。變量名稱是區(qū)分大小寫的,所以 %i 不同于 %I.關(guān)于:for命令可以帶參數(shù)或不帶參數(shù),帶參數(shù)時(shí)支持以下參數(shù):/d /l /r /f下面分別解釋一下零:無參數(shù)時(shí):-FOR %variable IN (set) DO command command-parameters%variable 指定一個(gè)單一字母可替換的參數(shù)。(set) 指定一個(gè)或一組文件。可以使用通配符。command 指定對(duì)每個(gè)文件執(zhí)行的命令。command-parameters為特定命令指定參數(shù)或命令行開關(guān)。TTT示例:for %i in (t*.*) do echo %i -顯示當(dāng)前目錄下與t*.*相匹配的文件(只顯示文件名,不顯示路徑) for %i in (d:mydocuments*.doc) do echo %i -顯示d:mydocuments目錄下與*.doc相匹配的文件一、參數(shù) /d (參數(shù)只能顯示當(dāng)前目錄下的目錄名字)格式:FOR /D %variable IN (set) DO command command-parameters這個(gè)參數(shù)主要用于目錄搜索,不會(huì)搜索文件,/D 參數(shù)只能顯示當(dāng)前目錄下的目錄名字。(TTT特別說明:只會(huì)搜索指定目錄下的目錄,不會(huì)搜索再下一級(jí)的目錄。)TTT示例:for /d %i in (c:*) do echo %i -顯示c盤根目錄下的所有目錄for /d %i in (?) do echo %i -顯示當(dāng)前目錄下名字只有1-3個(gè)字母的目錄二、參數(shù) /R (搜索指定路徑及所有子目錄中與set相符合的所有文件)格式:FOR /R drive:path %variable IN (set) DO command command-parameters此命令會(huì)搜索指定路徑及所有子目錄中與set相符合的所有文件,注意是指定路徑及所有子目錄。1、set中的文件名如果含有通配符(?或*),則列舉/R參數(shù)指定的目錄及其下面的所用子目錄中與set相符合的所有文件,無相符文件的目錄則不列舉。2、如果set中為具體文件名,不含通配符,則枚舉該目錄樹(即列舉該目錄及其下面的所有子目錄)(并在后面加上具體的文件名),而不管set中的指定文件是否存在。例:for /r c: %i in (*.exe) do echo %i -把C盤根目錄,和每個(gè)目錄的子目錄下面全部的EXE文件都列出來了!TTT示例:for /r c: %i in (boot.ini) do echo %i -枚舉了c盤所有目錄for /r d:backup %i in (1) do echo %i -枚舉dbackup目錄for /r c: %i in (boot.ini) do if exist %i echo %i -很好的搜索命令,列舉boot.ini存在的目錄三、參數(shù) /L (該集表示以增量形式從開始到結(jié)束的一個(gè)數(shù)字序列。可以使用負(fù)的 Step)格式:FOR /L %variable IN (start,step,end) DO command command-parameters該集表示以增量形式從開始到結(jié)束的一個(gè)數(shù)字序列。可以使用負(fù)的 StepTTT示例:for /l %i in (1,1,5) do echo %i -輸出1 2 3 4 5for /l %i in (1,2,10) do echo %i -輸出1,3,5,7,9 for /l %i in (100,-20,1) do echo %i -輸出100,80,60,40,20for /l %i in (1,1,5) do start cmd -打開5個(gè)CMD窗口for /l %i in (1,1,5) do md %i -建立從15共5個(gè)文件夾for /l %i in (1,1,5) do rd /q %i -刪除從15共5個(gè)文件夾四、參數(shù) /F (使用文件解析來處理命令輸出、字符串及文件內(nèi)容。)這個(gè)參數(shù)是最難的,參數(shù)又多,先簡(jiǎn)單的解釋一下:for命令帶這個(gè)參數(shù)可以分析文件內(nèi)容,字符串內(nèi)容或某一命令輸出的結(jié)果,并通過設(shè)置option得我們想要的結(jié)果。以下是某高手的解釋,感覺有點(diǎn)太專業(yè)了,自認(rèn)為不太容易理解,也列一下:迭代及文件解析-使用文件解析來處理命令輸出、字符串及文件內(nèi)容。使用迭代變量定義要檢查的內(nèi)容或字符串,并使用各種options選項(xiàng)進(jìn)一步修改解析方式。使用options令牌選項(xiàng)指定哪些令牌應(yīng)該作為迭代變量傳遞。請(qǐng)注意:在沒有使用令牌選項(xiàng)時(shí),/F 將只檢查第一個(gè)令牌。文件解析過程包括讀取輸出、字符串或文件內(nèi)容,將其分成獨(dú)立的文本行以及再將每行解析成零個(gè)或更多個(gè)令牌。然后通過設(shè)置為令牌的迭代變量值,調(diào)用 for 循環(huán)。默認(rèn)情況下,/F 傳遞每個(gè)文件每一行的第一個(gè)空白分隔符號(hào)。跳過空行。(TTT補(bǔ)充說明:一般在tokens后只指定第一個(gè)參數(shù),如%i或%a,在后面使用第二個(gè)及兩個(gè)以上的參數(shù),自動(dòng)按順序往下排即可。如前面指定的是%a,后面則 用%b代表第二個(gè)結(jié)果,%c代表第 三個(gè)結(jié)果。測(cè)試了一下tokens后指定多個(gè)變量名,沒有測(cè)試成功,應(yīng)該是不可以的。所以token后只能跟要使用的第一個(gè)變量名如果使用的變量名超過了%z或%Z,就無法使用了,曾經(jīng)以為會(huì)循環(huán)過來:如%z后可以使用%a或%A,但經(jīng)測(cè)試,這是不可以的。如:for /f tokens=1,2,3* delims=-, %y in (aa bb,cc-dd ee) do echo %y %z %A %a -只會(huì)輸出前兩個(gè)字符串,后面的兩個(gè)變量是無效的。)TTT:下面列我做的幾個(gè)例子:1,分析文件的例子FOR /F eol=; tokens=1,2* delims=,- %i in (d:test.txt) do echo %i %j %k2,分析字符串的例子:for /f tokens=1,2,3* delims=-, %i in (aa bb,cc-dd ee) do echo %i %j %k %l3,分析命令輸出的例子:FOR /F tokens=1* delims= %i IN (set) DO echo %i-%j如果使用了usebackq參數(shù)后,命令如下,結(jié)果與上面的完全相同。1,分析文件的例子FOR /F usebackq eol=; tokens=1,2* delims=,- %i in (d:test.txt) do echo %i %j %k2,分析字符串的例子:for /f usebackq tokens=1,2,3* delims=-, %i in (aa bb,cc-dd ee) do echo %i %j %k %l3,分析命令輸出的例子:(會(huì)枚舉當(dāng)前環(huán)境中的環(huán)境變量名稱和值。)FOR /F usebackq tokens=1* delims= %i IN (set) DO echo %i-%j結(jié)果大家可以試一下,很容易就明白的。下面依次說明一下:一、 I - 刪除任何引號(hào)(),擴(kuò)展 %I這個(gè)變量的作用就如他的說明,刪除引號(hào)!刪除引號(hào)規(guī)則如下(BAT兄補(bǔ)充!):1、若字符串首尾同時(shí)存在引號(hào),則刪除首尾的引號(hào);2、若字符串尾不存在引號(hào),則刪除字符串首的引號(hào);3、如果字符串中間存在引號(hào),或者只在尾部存在引號(hào),則不刪除。龍卷風(fēng)補(bǔ)充:無頭不刪,有頭連尾刪。我們來看這個(gè)例子,首先建立臨時(shí)文件temp.txt,內(nèi)容如下?12345111122223333444444555555也可建立個(gè)BAT文件代碼如下:?12345678910echo offecho 1111temp.txtecho 2222temp.txtecho 3333temp.txtecho 444444temp.txtecho 555555temp.txtrem 上面建立臨時(shí)文件,注意不成對(duì)的引號(hào)要加轉(zhuǎn)義字符,重定向符號(hào)前不要留空格FOR /F delims= %i IN (temp.txt) DO echo %ipausedel temp.txt執(zhí)行后,我們看CMD的回顯如下:1111 #字符串前的引號(hào)被刪除了2222 #字符串首尾的引號(hào)都被刪除了3333 #字符串前無引號(hào),后面的引號(hào)保留444444 #字符串前面的引號(hào)刪除了,而中間的引號(hào)保留555555 #字符串前面的引號(hào)刪除了,而中間的引號(hào)保留請(qǐng)按任意鍵繼續(xù). . .結(jié)果和之前temp.txt中的內(nèi)容對(duì)比一下,我們會(huì)發(fā)現(xiàn)第1、2、5行的引號(hào)都消失了,這就是刪除引號(hào)i的作用了!二、 %fI - 將 %I 擴(kuò)展到一個(gè)完全合格的路徑名示例:把代碼保存放在隨便哪個(gè)地方,我這里就放桌面吧.FOR /F delims= %i IN (dir /b) DO echo %fipause執(zhí)行后顯示內(nèi)容如下C:Documents and SettingsAdministrator桌面test.batC:Documents and SettingsAdministrator桌面test.vbs當(dāng)我把代碼中的 %fi直接改成%iFOR /F delims= %i IN (dir /b) DO echo %ipause執(zhí)行后就會(huì)顯示以下內(nèi)容:test.battest.vbs通過對(duì)比,我們很容易就看出沒有路徑了,這就是將 %I 擴(kuò)展到一個(gè)完全合格的路徑名的作用,也就是如果%i變量的內(nèi)容是一個(gè)文件名的話,他就會(huì)把這個(gè)文件所在的絕對(duì)路徑打印出來,而不只單單打印一個(gè)文件名,自己動(dòng)手動(dòng)實(shí)驗(yàn)下就知道了!三、 %dI - 僅將 %I 擴(kuò)展到一個(gè)驅(qū)動(dòng)器號(hào)看例子:代碼如下,我還是放到桌面執(zhí)行!FOR /F delims= %i IN (dir /b) DO echo %dipause執(zhí)行后我CMD里顯示如下C:C:我桌面就兩個(gè)文件test.bat,test.vbs,%di作用是,如果變量%i的內(nèi)容是一個(gè)文件或者目錄名,他就會(huì)把他這文件或者目錄所在的盤符號(hào)打印出來!四、 %pI - 僅將 %I 擴(kuò)展到一個(gè)路徑這個(gè)用法和上面一樣,他只打印路徑不打印文件名字FOR /F delims= %i IN (dir /b) DO echo %pipause我就不打結(jié)果了,大家自己復(fù)制代碼看結(jié)果吧,下面幾個(gè)都是這么個(gè)用法,代碼給出來,大家自己看結(jié)果吧!五、 %nI - 僅將 %I 擴(kuò)展到一個(gè)文件名只打印文件名字FOR /F delims= %i IN (dir /b) DO echo %nipause六、 %xI - 僅將 %I 擴(kuò)展到一個(gè)文件擴(kuò)展名只打印文件的擴(kuò)展名FOR /F delims= %i IN (dir /b) DO echo %xipause七、 %sI - 擴(kuò)展的路徑只含有短名打印絕對(duì)短文件名FOR /F delims= %i IN (dir /b) DO echo %sipause八、 %aI - 將 %I 擴(kuò)展到文件的文件屬性打印文件的屬性FOR /F delims= %i IN (dir /b) DO echo %aipause九、 %tI - 將 %I 擴(kuò)展到文件的日期/時(shí)間打印文件建立的日期FOR /F delims= %i IN (dir /b) DO echo %tipause十、 %zI - 將 %I 擴(kuò)展到文件的大小打印文件的大小FOR /F delims= %i IN (dir /b) DO echo %zipause龍卷風(fēng)補(bǔ)充:上面例子中的delims=可以改為delims=,即不要分隔符十一、 %$PATH:I - 查找列在路徑環(huán)境變量的目錄,并將 %I 擴(kuò)展到找到的第一個(gè)完全合格的名稱。如果環(huán)境變量名未被定義,或者沒有找到文件,此組合鍵會(huì)擴(kuò)展到空字符串這是最后一個(gè),和上面那些都不一樣,我單獨(dú)說說!然后在把這些代碼保存為批處理,放在桌面。echo offFOR /F delims= %i IN (“notepad.exe”) DO echo %$PATH:ipause龍卷風(fēng)補(bǔ)充

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論