「FOR命令詳解【參考僅供】」.doc_第1頁
「FOR命令詳解【參考僅供】」.doc_第2頁
「FOR命令詳解【參考僅供】」.doc_第3頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論