一,基本格式
對一組文件中的每一個文件執行某個特定命令。
FOR %variable IN (set) DO command [command-parameters]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters
爲特定命令指定參數或命令行開關。
在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable
而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
参数:for有4个参数 /d /l /r /f 他们的作用在下面的例子中讲解
二,參數/d
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。
例如:
@echo off
for /d %%i in (c:*) do echo %%i
pause
运行后, 会把c盘根目录下的全部目录打印出来, 不会打印文件
例子:
@echo off
for /d %%i in (???) do echo %%i
pause
會把當前目錄下有目錄名字只有1-3個字母的,就會顯示出來,沒有就不顯示了
* 号表示任意N个字符,而?只表示任意一个字符
三,參數/r
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。
如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,
則枚舉該目錄樹。
/r 可以把当前或者你指定路径下的文件名全部读取,注意是文件名字,
注意2點:
1.set中的文件名如果含有通配符(?或*),則列舉/r參數指定的目錄及其下面的所有子目錄中和set相符合的所有文件,無相符文件的目錄則不列舉
2.相反,如果set中爲具體文件名,不含通配符,則列舉該目錄樹,而不管set中的指定文件是否存在
例子:
@echo off
for /r d: %%i in (*.exe) do echo %%i
pause
將把d盤裏以exe結尾的文件全部列出來
@echo off
for /r d: %%i in (boot.ini) do echo %%i
pause
列舉d盤中存在boot.ini文件的目錄
四。
FOR /L %variable IN (start,step,end) DO command [command-parameters]
該集表示以增量形式從開始到結束的一個數字序列。因此,(1,1,5)將産生序列
1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1)
start 为起始值,stup为增量,end结束值,
例子:
@echo off
for /l %%i in (1,1,5) do echo %%i
pause
将会列出12345 这几个值
@echo off
for /l %%i in (1,1,5) do start cmd
pause
會打開5個cmd的窗口
五,參數/F
叠代及文件解析
使用文件解析來處理命令輸出,字符串及文件內容,使用叠代變量定義要檢查的內容或字符串,並使用各種option選項來進一步
修改解析方式,使用options令牌選項指定那些令牌應該作爲叠代變量傳遞
注意:在沒有使用令牌選項時,/f將只檢查第一個令牌
文件解析過程包括讀取輸出,字符串或文件內容,將其分成獨立的文本行以及在將每行解析成零個或更多個令牌
讓後通過設置爲令牌的叠代變量值,調用for循環,默認情況下,/f傳遞每個文件每一行的第一個空白分隔符,跳過空行
命令格式:
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
帶引號的字符串“options”包括一個或多個
指定不同解析選項的關鍵字,這些關鍵字爲:
eol=c 指定一个注释字符的结尾(就一个)
skip=n 指在文件开始时忽略的行数
delims=xxx 指定分隔符集,这个替换了空格和跳格键的默认分隔符集
tokens=x,y,m-n 指每行的哪一个符合被传递到每个迭代的for本身,这回倒是额外名称的分配,m-n格式为一个范围
通過nth符號指定mth,如果符號字符串中的最好一個字符星號,那麽額外的變量將在最好一個符號解析之後分配並接受行的保留文本,
經過測試,該參數最多只能區分31個字段
usebackq 指定新语法已在下类情况中使用:
在作爲命令執行一個後引號的字符串並且一個單
引号字符为文字字符串命令并允许在 file-set
中使用雙引號擴起文件名稱。
例子:
@echo off
rem 首先建立临时文件,用完删除>test.txt
echo ;注释行,这个是临时文件,用完删除>text.txt
echo 11 12 13 14 15 16 >> test.txt
echo 21,22,23,24,25,26 >> test.txt
echo 31-32-33-34-35-36 >> test.txt
for /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k
pause
del text.txt
運行......
解釋:
eol=; 分号开头的行尾注释行
tokens=1,3- 将每行第1段,第3段和剩余地段分别赋予变量%%i,%%j,%%k
delims=,- (减号后有一空格)以逗号减号和空格为分隔符,空格必须放在最后
例子:
@echo off
for /f "skip=4 delims=" %%i in ('net user') do echo %%i
pause
這樣你本機全部賬號名字就出來了把括號內的內容用兩個單引號起來就表示那個當命令執行,for會返回命令的沒行結果
,加那个"delims=" 是为了让空格的行能正行显示出来,不加就默认只显示空格左边一列,应为默认的分隔符为空格或叫跳格键
免責聲明:文中圖文均來自網絡,如有侵權請聯系刪除。
歐普軟件發布此文僅爲傳遞信息,不代表歐普軟件認同其觀點或證實其描述。