批處理變數 擷取字串方法

2021-07-13 14:20:05 字數 3146 閱讀 4764

@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 解釋同上↑

(注:%0就是該

batch

檔案的檔名

)%~dp0的意思是

更改當前目錄為批處理檔案的目錄

比如你有個批處理

a.bat

在d:/qq

資料夾下

a.bat

內容為cd /d %~dp0 

在這裡cd /d %~dp0

的意思就是

cd /d d:/qq 

%0代表批處理本身

是變數擴充

d既是擴充到分割槽號

d: p

就是擴充到路徑

/qq 

dp就是擴充到分割槽號路徑

d:/qq

擴充變數語法詳解:

:: 選項語法

: :: ~i - 

刪除任何引號

("),擴充

%i :: %~fi - 

將%i 

擴充到乙個完全合格的路徑名

:: %~di - 

僅將%i 

擴充到乙個驅動器號

:: %~pi - 

僅將%i 

擴充到乙個路徑

:: %~ni - 

僅將%i 

擴充到乙個檔名

:: %~xi - 

僅將%i 

擴充到乙個副檔名

:: %~si - 

擴充的路徑只含有短名

:: %~ai - 

將%i 

擴充到檔案的檔案屬性

:: %~ti - 

將%i 

擴充到檔案的日期/時間

:: %~zi - 

將%i 

擴充到檔案的大小

:: %~$path:i - 

查詢列在路徑環境變數的目錄,並將

%i 擴充

:: 到找到的第乙個完全合格的名稱。如果環境變數名

:: 未被定義,或者沒有找到檔案,此組合鍵會擴充到

:: 空字串

:: 可以組合修飾符來得到多重結果

: :: %~dpi - 

僅將%i 

擴充到乙個驅動器號和路徑

:: %~nxi - 

僅將%i 

擴充到乙個檔名和副檔名

:: %~fsi - 

僅將%i 

擴充到乙個帶有短名的完整路徑名

:: %~dp$path:i - 

查詢列在路徑環境變數的目錄,並將

%i 擴充

:: 到找到的第乙個驅動器號和路徑。

:: %~ftzai - 

將%i 

擴充到類似輸出線路的

dirpause

批處理 擷取字串的方法

為了說明擷取變數中字串的問題曾經舉過如下這個例子 如下 echo off set str 123456789 echo 第乙個字元為 str 0,1 echo 頭兩個字元為 str 0,2 echo 頭5個字元為 str 0,5 echo 去掉最後乙個字元後的字串為 str 0,1 echo 去掉最...

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 可選項。在...