DOS截取字串的方法_DOS/BAT

來源:互聯網
上載者:User

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

複製代碼 代碼如下:

@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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.