For 為一套文件中的每個文件運(yùn)行一個指定的命令。
一、基本語法
For %variable In (set) Do command [command=parameters]
參數(shù)說明
%variable 指定一個單一字母可替換的參數(shù)
set 指定一個或一組文件,可以使用通配符。
command 指定對每個文件執(zhí)行的命令。
command=parameters 命令的參數(shù)。
For %%i In (*) Do (Echo %%i)
這里使用星號通配符,表示當(dāng)前目錄下所有的文件。一個一個的賦予變量i。
For %%i In (a b c d) Do (Echo %%i)
這理一次將括號中的內(nèi)容賦予變量i
注意:變量前要加兩個百分號
二、啟用命令擴(kuò)展名
一共用 D、R、L、F 四個命令參數(shù)。
1.For /D %variable In (set) Do command [command=parameters]
指定通配符匹配的是目錄名
For /D %%i In (*) Do (Echo %%i)
遍歷當(dāng)前目錄下的所有目錄
For %%i In (*) Do (Echo %%i)
遍歷當(dāng)前目錄下的所有文件
2.For /R [[drive:]path] %variable In (set) Do command [command=parameters]
檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的FOR 語句。如果在 /R 后沒有指定目錄,則使用當(dāng)前目錄。如果集僅為一個單點(diǎn)(.)字符,則枚舉該目錄樹。
For %%i In (*) Do (Echo %%i)
遍歷當(dāng)前目錄下的所有文件
For /R %%i In (*) Do (Echo %%i)
遍歷當(dāng)前目錄下的所有文件,及其子目錄中的所有文件
For /R %%i In (.) Do (Echo %%i)
遍歷目錄樹,只顯示所有目錄及子目錄,不顯示目錄中的文件
3.For /L %variable In (start,step,end) Do command [command=parameters]
該集表示一個數(shù)字序列。(1,1,5) 將產(chǎn)生序列(1 2 3 4 5),(1,2,5) 將產(chǎn)生序列 (1 3 5)。
For /L %%i In (1,1,5) Do (Echo %%i)
等同于 For %%i In (1,2,3,4,5) Do (Echo %%i)
4.For /F ["options"] %variable In (set) Do command [command=parameters]
分析文件中的內(nèi)容,這個比較復(fù)雜。
options說明
eol=c
指一個行注釋字符的結(jié)尾
skip=n
指在文件開始時忽略的行數(shù)
delims=xxx
指分隔符集。默認(rèn)為空格和跳格鍵
tokens=x,y,m-n
指每行的哪一個符號被傳遞到每個迭代的 for 本身。這會導(dǎo)致額外變量名稱的分配。m-n格式為一個范圍。通過 nth 符號指定 mth。如果符號字符串中的最后一個字符星號,那么額外的變量將在最后一個符號解析之后分配并接受行的保留文本。
usebackq
指定新語法已在下類情況中使用: 在作為命令執(zhí)行一個后引號的字符串并且一個單引號字符為文字字符串命令并允許在 filenameset中使用雙引號擴(kuò)起文件名稱。
批處理中For語句F參數(shù)的用法
語法
For /F ["options"] %variable In (file-set) Do command [command-parameters]
options 參數(shù)說明
eol=c
指一個行注釋字符的結(jié)尾(就一個)
skip=n
指在文件開始時忽略的行數(shù)。
delims=xxx
指分隔符集。這個替換了空格和跳格鍵的默認(rèn)分隔符集。
tokens=x,y,m-n
指每行的哪一個符號被傳遞到每個迭代的 for 本身。這會導(dǎo)致額外變量名稱的分配。m-n格式為一個范圍。通過 nth 符號指定 mth。如果符號字符串中的最后一個字符星號,那么額外的變量將在最后一個符號解析之后分配并接受行的保留文本。
一個簡單例子
Text.txt文件內(nèi)容如下:
1,小明,80,85
2,小紅,90,95
#3,小強(qiáng),90,95
For /F "tokens=2,* delims=, " %%i In (Text.txt) Do (Echo %%i %%j)
這里分析 Text.txt 文件中的內(nèi)容,每次讀取一行,每行以逗號分隔,取第2列
這樣 %%i 表示第二列的內(nèi)容,%%j 就是星號中的內(nèi)容,星號就是第二列后面的全部內(nèi)容
For /F "eol=# tokens=2,* delims=, " %%i In (Text.txt) Do (Echo %%i %%j)
和上面相比少了第三行,因為第三行以井號開頭,eol=# 指定了以井號開頭的行為注釋行不分析
For /F "eol=# skip=1 tokens=2,* delims=, " %%i In (Text.txt) Do (Echo %%i %%j)
多了一個 skip=1,表示從跳過第一行,從第二行開始。
還可以這樣
For /F "tokens=1,2,3,* delims=, " %%i In (Text.txt) Do (Echo %%i %%j %%k %%l)
可以不用參數(shù)
For /F %%i In (Text.txt) Do (Echo %%i)
這樣,每次讀取一行內(nèi)容,顯示出來。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。