批處理 擷取字串的方法

2021-09-07 23:27:59 字數 1797 閱讀 7486

為了說明擷取變數中字串的問題曾經舉過如下這個例子:

**如下:

@echo off

set str=123456789

echo 第乙個字元為:%str:~0,1%

echo 頭兩個字元為:%str:~0,2%

echo 頭5個字元為:%str:~0,5%

echo 去掉最後乙個字元後的字串為:%str:~0,-1%

echo 去掉最後3個字元後的字串為:%str:~0,-3%

echo 第4個字元為:%str:~3,1%

echo 第4個及其之後的3個字元為:%str:~3,4%

echo 最後乙個字元為:%str:~-1%

echo 最後乙個字元為:%str:~-1,1%

echo 最後乙個字元為:%str:~-1,2%

echo 倒數第4個字元為:%str:~-4,1%

echo 倒數第4個及其之後的字元為:%str:~-4%

echo 倒數第4個及其之後的1個字元為:%str:~-4,2%

echo 倒數第4個及其之後的2個字元為:%str:~-4,3%

pause

為了說明這個問題,我在這裡把批處理取字元,做下進一步的解釋,希望對新手有所啟發

如下:echo %var:~n,k% 

我們在這裡對每個引數做個說明:"%var",即我們要從中要擷取字元的字串." ~ "取字

符標誌符(我是這麼理解的),"n" 我們將其理解為指標,"k"我們將其理解為偏移位址.(注

:指標和偏移位址都是從零開始數的)

我們還是用namejm版主的例子做下說明:

**如下:

@echo off

set str=123456789

rem 定義乙個str字串為123456789

echo 第乙個字元為:%str:~0,1%

rem 指標為0,偏移位址為1,即從第0位開始,取1位

echo 頭兩個字元為:%str:~0,2%

rem 指標為0,偏移位址為2,即從第0位開始,取2位

echo 頭5個字元為:%str:~0,5%

rem   指標為0,偏移位址為5,即從第0位開始,取5位

echo 去掉最後乙個字元後的字串為:%str:~0,-1%

rem 當"k"為負值時,我們可以這樣理解:從指標開始處開始取其後面所有字元,然後減去後面"abs(k)位"..所以這個句字我們可以做如下解釋:從第0位開始取其全部字元

為:123456789然後從後面減去abs(k)位,所以最後結果為:12345678

echo 去掉最後3個字元後的字串為:%str:~0,-3%

rem   該句解釋同上↑

echo 最後乙個字元為:%str:~-1%

rem   引數"n,"和"k"都可以為預設,預設"n,"時可以理解為:從abs(k)位開始取其全部

echo 倒數第4個及其之後的字元為:%str:~-4%

rem         解釋同上↑

echo 最後乙個字元為:%str:~-1,1%

rem   n為負值時,表示從後面開始擷取字元,取k位(此時n應從1開始數)

echo 最後乙個字元為:%str:~-1,2%

rem   解釋同上↑

echo 倒數第4個字元為:%str:~-4,1%

rem   解釋同上↑

echo 倒數第4個及其之後的1個字元為:%str:~-4,2%

rem   解釋同上↑

echo 倒數第4個及其之後的2個字元為:%str:~-4,3%

rem 解釋同上↑

pause

批處理變數 擷取字串方法

echo off set str 123456789 echo 第乙個字元為 str 0,1 echo 頭兩個字元為 str 0,2 echo 頭5個字元為 str 0,5 echo 去掉最後乙個字元後的 字串為 str 0,1 echo 去掉最後3個字元後的 字串為 str 0,3 echo 第4...

bat 批處理 字串 擷取

由於專案中配置項太多,經常有同事在配置xml的時候,講 配置的路徑搞錯,先需要搞乙個指令碼,可以自動將路徑擷取出來,晚上收集了點資料,暫時先上幾個 bat 後面留著 具體實現。echo off setvar 0 rem 迴圈開始了 continue set a var 1 echo 第 var 次迴...

JS擷取字串方法

substr 方法 返回乙個從指定位置開始的指定長度的子字串。stringvar.substr start length 引數stringvar 必選項。要提取子字串的字串文字或 string 物件。start 必選項。所需的子字串的起始位置。字串中的第乙個字元的索引為 0。length 可選項。在...