批處理 FOR參數(shù)/F之tokens詳解
更新時(shí)間:2009年04月27日 18:37:13 作者:
tokens=x,y,m-n 提取列實(shí)現(xiàn)代碼。
(四)tokens=x,y,m-n 提取列
格式:
FOR /F "tokens=x,y,m-n" %%I IN (Command1) DO Command2
用法:
一句話總結(jié):提取列。
通俗講,共同提取每一行的第m小節(jié)的內(nèi)容。
因此,可以用該命令來指定提取文本信息。
tokens=有時(shí)表示提取全部。
tokens=m表示提取第m列。
tokens=m,n表示提取第m列和第n列。
tokens=m-n表示提取第m列至第n列。
Tokens=*表示刪除每行前面的空格。忽略行首的所有空格。
tokens=m*提取第m列以后的所有字符,星號(hào)表示剩余的字符。
tokens=m,*提取第m列以后的所有字符,星號(hào)表示剩余的字符。
輸出變量的個(gè)數(shù)由定義了的tokens決定。
在 FOR 語句中顯式聲明 %%i。使用tokens= 隱式聲明%%j 和%%k。只要不會(huì)引起試圖聲明高于字母“z”或“Z”的某個(gè)變量,則使用tokens= 可以指定最多 26 個(gè)輸出變量。
接著前面的例子“靜夜思”。
如果我要提取第三小節(jié)“舉頭望明月”,如何做到?
@echo off
for /f "delims=, tokens=3" %%i in (靜夜思.txt) do echo %%i
pause>nul
講解:
首先用delims=,表示命令要用逗號(hào)作為詩句的分隔符將四句分成四小節(jié)。然后用tokens=3提取第三小節(jié),即“舉頭望明月”了。
delims=和tokens=共用一對(duì)雙引號(hào),如果單獨(dú)用雙引號(hào),則FOR命令返回的只能是它們之中的一個(gè)。因?yàn)樵诘谝还?jié)說過,F(xiàn)OR是逐一讀取命令的,將delims和tokens分開后,F(xiàn)OR只能一次讀取一個(gè),不能一次全部讀取。
注意:
Tokens常和delims一起使用。
首先,一行內(nèi)容被delims用分割符號(hào)如逗號(hào)等分隔成許多小段或小節(jié)。
然后,tokens才能提取每行之間對(duì)應(yīng)的這些小段或小節(jié)——列。具體看下面例子。
例:提取前面例子文本“a.txt”中每行的第三段內(nèi)容“ccc”、“kkk”、“ggg”、“考試”。
@echo off
for /f "skip=1 delims=,, tokens=3" %%i in (a.txt) do echo %%i
pause>nul
注意:為什么kkk不出現(xiàn)呢?
例:如何屏蔽掉文本“a.txt”中的標(biāo)點(diǎn)符號(hào)?
@echo off
for /f "skip=1delims=,, tokens=1-4" %%i in (a.txt) do echo %%i %%j %%k %%l
pause>nul
講解:
%%i %%j %%k %%l是輸出變量,它的個(gè)數(shù)由tokens后面的(m-n)決定,一般有(n-m+1)個(gè),但不能超過Z。
并且%%后面的字母存在先后順序,%%a %%b是順向,倒過來則是逆向的。
代行號(hào)的tokens=m*,星號(hào)表示m后面的所有剩余的列。
例:
for /f "tokens=*" %%i in (a.txt) do echo %%i
講解:
沒有指定具體的列,"tokens=*"將提取全部列,后面只需一個(gè)輸出變量%%i。
例:
for /f "tokens=2*" %%i in (a.txt) do echo %%i %%j
講解:
"tokens=2*"提取第二列以后的所有字符,星號(hào)表示剩余的字符。輸出變量%%i對(duì)應(yīng)于2的輸入變量,%%j對(duì)應(yīng)于星號(hào)的輸入變量。
注意:
這里沒有使用delisms但卻以空格分隔了,是因?yàn)镕OR默認(rèn)空格是做分隔符的。
例:屏蔽掉“易經(jīng).txt”中的標(biāo)點(diǎn)符號(hào):
@echo off
for /f "tokens=1-5 delims=:," %%a in (易經(jīng).txt) do echo %%a %%b %%c %%d %%e
pause>nul
講解:
當(dāng)delims定義了兩個(gè)分隔符“:”和“,”時(shí),提取列要用到tokens。
有五個(gè)列,所以tokens要定義提取第一列至第五列,即1-5,相應(yīng)地,后面需要五個(gè)輸出顯示變量%%a %%b %%c %%d %%e。你也可以這樣修改,避免過多的變量符號(hào)【補(bǔ)充?】
你也可以將最后多余的句號(hào)定義為分隔符“delims=:,。”將其屏蔽掉。
練習(xí):
1、 請(qǐng)簡(jiǎn)單說說tokens的作用
2、 Tokens=1,3-5后面的輸出變量需要多少個(gè)?
3、 請(qǐng)使用tokens提取下面網(wǎng)頁的標(biāo)題《硬盤知識(shí)及故障大總匯(頁 2)》:
手機(jī),3G手機(jī),智能手機(jī),手機(jī)電影,手機(jī)軟件,手機(jī)游戲,鈴聲,主題,圖片,電子書,手機(jī)維修,手機(jī)大全,手機(jī)報(bào)價(jià),下載,智能手機(jī)的測(cè)評(píng),使用心得 硬盤知識(shí)及故障大總匯(頁 2) - 電腦技術(shù)交流區(qū) - 3g365智能手機(jī)論壇 - powered by Discuz! Archiver.mht
格式:
FOR /F "tokens=x,y,m-n" %%I IN (Command1) DO Command2
用法:
一句話總結(jié):提取列。
通俗講,共同提取每一行的第m小節(jié)的內(nèi)容。
因此,可以用該命令來指定提取文本信息。
tokens=有時(shí)表示提取全部。
tokens=m表示提取第m列。
tokens=m,n表示提取第m列和第n列。
tokens=m-n表示提取第m列至第n列。
Tokens=*表示刪除每行前面的空格。忽略行首的所有空格。
tokens=m*提取第m列以后的所有字符,星號(hào)表示剩余的字符。
tokens=m,*提取第m列以后的所有字符,星號(hào)表示剩余的字符。
輸出變量的個(gè)數(shù)由定義了的tokens決定。
在 FOR 語句中顯式聲明 %%i。使用tokens= 隱式聲明%%j 和%%k。只要不會(huì)引起試圖聲明高于字母“z”或“Z”的某個(gè)變量,則使用tokens= 可以指定最多 26 個(gè)輸出變量。
接著前面的例子“靜夜思”。
如果我要提取第三小節(jié)“舉頭望明月”,如何做到?
@echo off
for /f "delims=, tokens=3" %%i in (靜夜思.txt) do echo %%i
pause>nul
講解:
首先用delims=,表示命令要用逗號(hào)作為詩句的分隔符將四句分成四小節(jié)。然后用tokens=3提取第三小節(jié),即“舉頭望明月”了。
delims=和tokens=共用一對(duì)雙引號(hào),如果單獨(dú)用雙引號(hào),則FOR命令返回的只能是它們之中的一個(gè)。因?yàn)樵诘谝还?jié)說過,F(xiàn)OR是逐一讀取命令的,將delims和tokens分開后,F(xiàn)OR只能一次讀取一個(gè),不能一次全部讀取。
注意:
Tokens常和delims一起使用。
首先,一行內(nèi)容被delims用分割符號(hào)如逗號(hào)等分隔成許多小段或小節(jié)。
然后,tokens才能提取每行之間對(duì)應(yīng)的這些小段或小節(jié)——列。具體看下面例子。
例:提取前面例子文本“a.txt”中每行的第三段內(nèi)容“ccc”、“kkk”、“ggg”、“考試”。
@echo off
for /f "skip=1 delims=,, tokens=3" %%i in (a.txt) do echo %%i
pause>nul
注意:為什么kkk不出現(xiàn)呢?
例:如何屏蔽掉文本“a.txt”中的標(biāo)點(diǎn)符號(hào)?
@echo off
for /f "skip=1delims=,, tokens=1-4" %%i in (a.txt) do echo %%i %%j %%k %%l
pause>nul
講解:
%%i %%j %%k %%l是輸出變量,它的個(gè)數(shù)由tokens后面的(m-n)決定,一般有(n-m+1)個(gè),但不能超過Z。
并且%%后面的字母存在先后順序,%%a %%b是順向,倒過來則是逆向的。
代行號(hào)的tokens=m*,星號(hào)表示m后面的所有剩余的列。
例:
for /f "tokens=*" %%i in (a.txt) do echo %%i
講解:
沒有指定具體的列,"tokens=*"將提取全部列,后面只需一個(gè)輸出變量%%i。
例:
for /f "tokens=2*" %%i in (a.txt) do echo %%i %%j
講解:
"tokens=2*"提取第二列以后的所有字符,星號(hào)表示剩余的字符。輸出變量%%i對(duì)應(yīng)于2的輸入變量,%%j對(duì)應(yīng)于星號(hào)的輸入變量。
注意:
這里沒有使用delisms但卻以空格分隔了,是因?yàn)镕OR默認(rèn)空格是做分隔符的。
例:屏蔽掉“易經(jīng).txt”中的標(biāo)點(diǎn)符號(hào):
@echo off
for /f "tokens=1-5 delims=:," %%a in (易經(jīng).txt) do echo %%a %%b %%c %%d %%e
pause>nul
講解:
當(dāng)delims定義了兩個(gè)分隔符“:”和“,”時(shí),提取列要用到tokens。
有五個(gè)列,所以tokens要定義提取第一列至第五列,即1-5,相應(yīng)地,后面需要五個(gè)輸出顯示變量%%a %%b %%c %%d %%e。你也可以這樣修改,避免過多的變量符號(hào)【補(bǔ)充?】
你也可以將最后多余的句號(hào)定義為分隔符“delims=:,。”將其屏蔽掉。
練習(xí):
1、 請(qǐng)簡(jiǎn)單說說tokens的作用
2、 Tokens=1,3-5后面的輸出變量需要多少個(gè)?
3、 請(qǐng)使用tokens提取下面網(wǎng)頁的標(biāo)題《硬盤知識(shí)及故障大總匯(頁 2)》:
手機(jī),3G手機(jī),智能手機(jī),手機(jī)電影,手機(jī)軟件,手機(jī)游戲,鈴聲,主題,圖片,電子書,手機(jī)維修,手機(jī)大全,手機(jī)報(bào)價(jià),下載,智能手機(jī)的測(cè)評(píng),使用心得 硬盤知識(shí)及故障大總匯(頁 2) - 電腦技術(shù)交流區(qū) - 3g365智能手機(jī)論壇 - powered by Discuz! Archiver.mht
相關(guān)文章
批處理實(shí)現(xiàn)固定IP地址 系統(tǒng)自動(dòng)登錄 登錄后鎖定計(jì)算機(jī)
一時(shí)無聊于是乎又寫了個(gè)批處理 廢話不多說直接上腳本 要用的把腳本復(fù)制到記事本中,再把記事本的后綴改為“.BAT”雙擊就可以了2012-04-04
dos進(jìn)程查看與停止命令分享(tasklist,taskkill)
有時(shí)候我們需要dos下查看與停止進(jìn)程,那么就需要一些dos命令,常見的命令有tasklist,taskkill等2012-06-06
批處理一鍵關(guān)閉有害端口完整版(適合服務(wù)器使用)
把下面的內(nèi)容復(fù)制到記事本 保存為 文件名.bat 雙擊運(yùn)行即可,不過使用過程中最好是本地先測(cè)試,注意遠(yuǎn)程端口問題2013-02-02
通過批處理bat解決局域網(wǎng)打印機(jī)共享問題
其實(shí)就是通過bat通過ipc連接已經(jīng)安裝打印機(jī)的機(jī)器,安裝打印機(jī)機(jī)器的需要先共享才可以2014-05-05
批處理中屏蔽錯(cuò)誤信息 nul 2>nul 的用法 (cmd>nul空
批處理中屏蔽錯(cuò)誤信息這個(gè) >nul 2>nul 可以屏蔽一切屏幕的輸出可以這樣理解2012-06-06

