FOR引數F的選項delims與tokens上

2021-08-23 13:39:01 字數 2009 閱讀 9276

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...