批處理 delims分割字串

2021-09-28 18:27:58 字數 1999 閱讀 8338

使用delims的目的主要是通過切分字串獲得可編輯的字串以便於進行下一步編輯。delims好比一把西瓜刀,文字資訊就好比西瓜,使用delims這把西瓜刀將文字這個西瓜切分成許多小塊,這樣吃起來就方便了。…… -

**:@echo off

for /f "delims=:" %%a in (易經.txt) do echo %%a

pause>nul

執行結果將顯示第一小節(列)的內容。

原因是沒有定義顯示的列,預設情況下忽略第乙個分隔符(冒號)後面的內容。

要顯示列,需要用到下節學習的tokens。如:

@echo off

for /f "tokens=1,2 delims=:" %%a in (易經.txt) do echo %%a %%b

pause>nul

**:@echo off

for /f "delims=:," %%a in (易經.txt) do echo %%a

pause>nul

執行結果將顯示第一小節(列)的內容。

沒有定義列的時候,預設只顯示第一列,忽略分隔符和第乙個分隔符後的內容。

例如:文字「靜夜思.txt」的內容是:

床前明月光,疑是地上霜,舉頭望明月,低頭思故鄉。

文字中有四句古詩,詩句之間用逗號分隔。古詩原本是沒有標點符號的,標點符號是後人才加上去的。逗號在語文上是語氣暫停的意思,其實就是用來分隔語句意思以便於閱讀和理解。delims=,的意思就是提取逗號做分隔符,並以此將詩句分成四個小列或小節。

第一列 分隔符 第二列 分

隔符 第三列 分

隔符 第三列

第一行 床前明月光 , 疑是地上霜 , 舉頭望明月, , 低頭思故鄉。

如果我要用for將四句詩都顯示到螢幕上,不需要任何引數即能實現:

@echo off

for /f %%i in (靜夜思.txt) do echo %%i

pause>nul

如果我只要「床前明月光」這句話,就需要delims幫忙了:

@echo off

for /f "delims=," %%i in (靜夜思.txt) do echo %%i

pause>nul

講解:delims=後面跟了乙個逗號,表示用原文中的逗號作為分隔符(劃分的方法)將古詩分成四個小節。預設情況下,delims只顯示分隔符前的第一小節,分隔符通常被忽略掉。顯示其他小節的詩句要用到列提取命令「tokens」。

仍用前面eol裡的文字「a.txt」做試驗。

例:如何只顯示每行的第乙個標點前的內容?

@echo off

for /f "eol=: delims=,, " %%i in (a.txt) do echo %%i

pause>nul

執行結果顯示:

aaaiii

eee你好

注意:文字中有英文的點號和中文的逗號,點號要放在逗號前面。

符號集中(也就是=後面的標點符號),各個符號之間沒有空格。

文字中用空格分隔的,符號集裡中文逗號後面只有乙個空格,且必須放到最後。

用於分隔的標點符號重複的一般只取乙個做代表。

for預設是以空格和,:;/等標點符號作分割符的,所以要取得整行內容通常會用"delims="這樣的形式來取消for的預設分割符。

例:為什麼第三行的iii後面的內容不見了?

@echo off

for /f %%i in (a.txt) do echo %%i

pause>nul

講解:這裡沒有使用delim進行分隔,而帶有空格的行空格後面的內容被忽略了,原因就是預設情況下,也就是沒有即使沒有用delims選項,for也會以空格作為分隔符,將空格後的內容遮蔽掉。

使用delims的目的主要是通過切分字串獲得可編輯的字串以便於進行下一步編輯。delims好比一把西瓜刀,文字資訊就好比西瓜,使用delims這把西瓜刀將文字這個西瓜切分成許多小塊,這樣吃起來就方便了。

如果你想吃其中的某一塊,怎麼辦呢?直接用刀叉tokens提取就可以了。

批處理delims分割時遇到的問題。。

今天寫了個將檔案每行按逗號分割並取第六行的批處理。但是結果不對。看圖一目了然。for 迴圈的 f 後面的引數是這樣的 然後檔案的內容是這樣的 亮點是倒數第二行。其實6才是第六列的值。其他行第六列都是空。然後我列印出第六列的值。結果如下 說明一點。它列印的是按逗號分割後不為空的第六個數。如果前面有空的...

批處理 字串操作

批處理有著具有非常強大的字串處理能力,其功能絕不低於c語言裡面的字串函式集。批處理中可實現的字串處理功能有 擷取字串內容 替換字串特定字段 合併字串 擴充字串等功能。下面對這些功能一一進行講解。擷取字串可以說是字串處理功能中最常用的乙個子功能了,能夠實現擷取字串中的特定位置的乙個或多個字元。舉例說明...

DELPHI 字串分割處理

tstringlist,預設分割符為逗號 空格 回車,還可以指定單個字元 但是待分解的字串中不能包含逗號 空格 回車 indy的庫函式和tstringlist差不多,也不能包含逗號 空格 回車 下面這個函式是我自己寫的,指定分割符,可以單個字元,也可以是多個字元為分割符號,專案中一直在用,還不錯 f...