四、/F 參數(shù)
格式:
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]
用法:
一句話總結(jié):常用于文本信息編輯,如查詢、提取、替換等等。
迭代及文件解析,使用文件解析來處理命令輸出、字符串及文件內(nèi)容。
注意:
帶引號的字符串"options"包括一個或多個指定不同解析選項的關(guān)鍵字:eol=、skip=、delims=、tokens=和usebackq。后面將逐個講解。
先創(chuàng)建一個文本文件a.txt,內(nèi)容如下:
::我的測試
aaa,bbb,ccc,ddd
iii jjj kkk lll
eee,fff,ggg,hhh
你好,甲兵,考試,吃飯
將本內(nèi)容保存好,后面內(nèi)容都要用到該文本做試驗。
(一) eol=c 忽略以某字符開頭的行
格式:
FOR /F "eol=c" %%I IN (Command1) DO Command2
用法:
eol=c
一句話總結(jié):表示忽略(隱藏、屏蔽)開頭字符是C的行。
“指定行尾字符(僅一個字符)。”這是幫助文件里的話,目前不理解它的用法。
Eol=
默認(rèn)情況下屏蔽冒號開頭的行
如果C是文本某行開頭第一個字符,即“eol=a”,它將在屏幕上屏蔽掉以a開頭的行。
例如:文本“靜夜思.txt”的內(nèi)容是:
床前明月光,
疑是地上霜;
舉頭望明月,
低頭思故鄉(xiāng)。
如何忽略掉文本文件a.txt中的第三行:“舉頭望明月,”?
@echo off
for /f "eol=舉" %%i in (靜夜思.txt) do echo %%i
pause>nul
運行結(jié)果將隱藏第三行。
注意:
如果忽略的字符串的開頭是重復(fù)字符,則EOL后只需截取一個字符。
如要“aaa”,“eol=”后只需一個“a”就可以了。同樣,雙冒號“::”只取一個。
練習(xí):
請用skip屏蔽掉文本“a.txt”中的第四行,即隱藏行“eee,fff,ggg,hhh”。
拓展思考:如何文本中的最后一行?
(二)skip=n 忽略前N行
格式:
FOR /F "skip=n" %%I IN (Command1) DO Command2
用法:
一句話總結(jié):忽略文本開頭的前N行。
skip=n表示忽略(屏蔽、隱藏)從第一行到第N行的內(nèi)容。(n>0)
例:忽略文本a的前四行。
@echo off
for /f "skip=4" %%i in (a.txt) do echo %%i
pause>nul
運行結(jié)果將只顯示第五行。
練習(xí):
忽略掉文本“a.txt”中的第一行有幾種方法?