關於DOS(windows命令列)截取變數中字串問題的詳細說明

來源:互聯網
上載者:User
namejm版主為了說明截取變數中字串的問題曾經舉過如下這個例子:

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