for引數f的選項delims與tokens
本篇為《for入門與精通秘籍》的補充內容。
在for命令語句的引數f中,最難理解的就是delims和tokens兩個選項,本文簡單的做乙個比較和總結。
「for /f」常用來解析文字,讀取字串。分工上,delims負責切分字串,而tokens負責提取字串。如果把字串當作蛋糕,delims像刀子,用來切蛋糕,tokens像叉子,用來取切好的蛋糕。下面我們用例項來進行理解。
序號、歌手名-歌曲名.字尾名
1、饒天亮-玫瑰愛人.wma
2、高一首-我不願錯過.***
3、黃凱芹-傷感的戀人.***
4、黃燦-黃玫瑰.lrc
5、黎姿-如此這般的愛情故事.***
**1:顯示全部內容
@echo off
for /f %%i in (歌曲列表.txt) do echo %%i
pause>nul
執行結果:
序號、歌手名-歌曲名.字尾名
1、饒天亮-玫瑰愛人.wma
2、高一首-我不願錯過.***
3、黃凱芹-傷感的戀人.***
4、黃燦-黃玫瑰.lrc
5、黎姿-如此這般的愛情故事.***
講解:如果不使用引數「/f」,執行結果只顯示括號裡的文字字元「歌曲列表.txt」,而不能讀取文字檔案「歌曲列表.txt」中的內容。可見,「/f」是解析文字字串的好工具。
一、delims
假如只要序號,不要歌手名、歌曲名和字尾名,如何辦到?
**2:預設提取第一列
@echo off
for /f "delims=、" %%i in (歌曲列表.txt) do echo %%i
pause>nul
執行結果:序號1
2345
講解:"delims=、"表示定義頓號「、」為分隔符,並用該分隔符「、」切分文字字串。字串就是「歌曲列表.txt」裡的內容,也就是檔案裡的文字和標點符號。
該頓號是原文中就有的。除了頓號「、」,原文中還有減號「-」和點號「.」,因此你也可以用它們來做分隔符。
**3:用減號「-」做分隔符
@echo off
for /f "delims=-" %%i in (歌曲列表.txt) do echo %%i
pause>nul
執行結果:
序號、歌手名
1、饒天亮
2、高一首
3、黃凱芹
4、黃燦
5、黎姿
講解:因為,當減號「-」被用做分隔符時,每行內容被減號「-」分隔成前後兩半,預設只顯示前半部分,而後半部分連同分隔符減號「-」都被忽略(省略)了。
**4:用點號「.」做分隔符
@echo off
for /f "delims=." %%i in (歌曲列表.txt) do echo %%i
pause>nul
執行結果:
序號、歌手名-歌曲名
1、饒天亮-玫瑰愛人
2、高一首-我不願錯過
3、黃凱芹-傷感的戀人
4、黃燦-黃玫瑰
5、黎姿-如此這般的愛情故事
講解:預設情況下,單純使用delims而不用tokens時,只顯示第乙個分隔符前的內容,第乙個分隔符和第乙個分隔符後面的內容將被忽略。
**5:定義多個分隔符
@echo off
for /f "delims=、-." %%i in (歌曲列表.txt) do echo %%i
pause>nul
執行結果:序號1
2345
講解:原因是,當定義頓號「、」、減號「-」和點號「.」三個標點符號為分隔符後,原文被分隔成四個部分。
如第二行「1、饒天亮-玫瑰愛人.wma」將被分隔成「1」、「饒天亮」、「玫瑰愛人」和「wma」 四個部分。
從第一行到最後一行,每行的每個部分對應下來相當於乙個豎列。因此,原文就有「序號」、「歌手名」、「歌曲名」、「字尾名」四列。
一般情況下,只讀取第一列的內容。後面的內容需要用tokens選項提取。
FOR引數F的選項delims與tokens下
二 tokens 假如只要歌手名和歌曲名,不要序號和字尾名,如何辦到?6 提取單列 echo off for f tokens 2 delims i in 歌曲列表.txt do echo i pause nul 執行結果將顯示 歌手名 歌曲名 饒天亮 玫瑰愛人 高一首 我不願錯過 黃凱芹 傷感的戀...
F 入門學習(十三) 選項
選項表示有兩種取值的狀態 有值或者無值。有值用some 取值。我終於知道前面的學習some是什麼意思了 無值用關鍵字none表示。定義選項常量 let x1 int option some 2 let x2 int option none結果為 val x1 int option some 2 va...
Nginx引數選項
options 選項 c 為 nginx 指定乙個配置檔案,來代替預設的。t不執行,而僅僅測試配置檔案。nginx 將檢查配置檔案的語法的正確性,並嘗試開啟配置檔案中所引用到的檔案。v顯示 nginx 的版本。v顯示 nginx 的版本,編譯器版本和配置引數。template anchornginx...