DOS截取字符串的方法
為了說(shuō)明截取變量中字符串的問(wèn)題曾經(jīng)舉過(guò)如下這個(gè)例子:
@echo off
set str=123456789
echo 第一個(gè)字符為:%str:~0,1%
echo 頭兩個(gè)字符為:%str:~0,2%
echo 頭5個(gè)字符為:%str:~0,5%
echo 去掉最后一個(gè)字符后的字符串為:%str:~0,-1%
echo 去掉最后3個(gè)字符后的字符串為:%str:~0,-3%
echo 第4個(gè)字符為:%str:~3,1%
echo 第4個(gè)及其之后的3個(gè)字符為:%str:~3,4%
echo 最后一個(gè)字符為:%str:~-1%
echo 最后一個(gè)字符為:%str:~-1,1%
echo 最后一個(gè)字符為:%str:~-1,2%
echo 倒數(shù)第4個(gè)字符為:%str:~-4,1%
echo 倒數(shù)第4個(gè)及其之后的字符為:%str:~-4%
echo 倒數(shù)第4個(gè)及其之后的1個(gè)字符為:%str:~-4,2%
echo 倒數(shù)第4個(gè)及其之后的2個(gè)字符為:%str:~-4,3%
pause
為了說(shuō)明這個(gè)問(wèn)題,我在這里把批處理取字符,做下進(jìn)一步的解釋,希望對(duì)新手有所啟發(fā)
如下:
echo %var:~n,k%
我們?cè)谶@里對(duì)每個(gè)參數(shù)做個(gè)說(shuō)明:"%var",即我們要從中要截取字符的字符串." ~ "取字
符標(biāo)志符(我是這么理解的),"n" 我們將其理解為指針,"k"我們將其理解為偏移地址.(注
:指針和偏移地址都是從零開(kāi)始數(shù)的)
我們還是用namejm版主的例子做下說(shuō)明:
@echo off
set str=123456789
rem 定義一個(gè)str字符串為123456789
echo 第一個(gè)字符為:%str:~0,1%
rem 指針為0,偏移地址為1,即從第0位開(kāi)始,取1位
echo 頭兩個(gè)字符為:%str:~0,2%
rem 指針為0,偏移地址為2,即從第0位開(kāi)始,取2位
echo 頭5個(gè)字符為:%str:~0,5%
rem 指針為0,偏移地址為5,即從第0位開(kāi)始,取5位
echo 去掉最后一個(gè)字符后的字符串為:%str:~0,-1%
rem 當(dāng)"k"為負(fù)值時(shí),我們可以這樣理解:從指針開(kāi)始處開(kāi)始取其后面所有字符,然后減去后面"abs(k)位"..所以這個(gè)句字我們可以做如下解釋:從第0位開(kāi)始取其全部字符
為:123456789然后從后面減去abs(k)位,所以最后結(jié)果為:12345678
echo 去掉最后3個(gè)字符后的字符串為:%str:~0,-3%
rem 該句解釋同上↑
echo 最后一個(gè)字符為:%str:~-1%
rem 參數(shù)"n,"和"k"都可以為缺省,缺省"n,"時(shí)可以理解為:從abs(k)位開(kāi)始取其全部
echo 倒數(shù)第4個(gè)及其之后的字符為:%str:~-4%
rem 解釋同上↑
echo 最后一個(gè)字符為:%str:~-1,1%
rem n為負(fù)值時(shí),表示從后面開(kāi)始截取字符,取k位(此時(shí)n應(yīng)從1開(kāi)始數(shù))
echo 最后一個(gè)字符為:%str:~-1,2%
rem 解釋同上↑
echo 倒數(shù)第4個(gè)字符為:%str:~-4,1%
rem 解釋同上↑
echo 倒數(shù)第4個(gè)及其之后的1個(gè)字符為:%str:~-4,2%
rem 解釋同上↑
echo 倒數(shù)第4個(gè)及其之后的2個(gè)字符為:%str:~-4,3%
rem 解釋同上↑
pause
相關(guān)文章
用bat操作注冊(cè)表實(shí)現(xiàn)不顯示擴(kuò)展名
用bat操作注冊(cè)表實(shí)現(xiàn)不顯示擴(kuò)展名...2007-08-08計(jì)算機(jī)/網(wǎng)絡(luò)設(shè)備狀態(tài)監(jiān)測(cè)腳本 批處理
計(jì)算機(jī)/網(wǎng)絡(luò)設(shè)備狀態(tài)監(jiān)測(cè)腳本 批處理...2007-03-03批處理獲取網(wǎng)卡名稱的代碼(附修改IP、網(wǎng)關(guān)、DNS腳本)
此腳本使用于因?yàn)榫W(wǎng)卡換過(guò)PCI槽,導(dǎo)致的網(wǎng)卡名稱帶有2,3,4的情況。2011-03-03bat 傳遞參數(shù)調(diào)用問(wèn)題解決記錄
這篇文章主要為大家介紹了bat 傳遞參數(shù)調(diào)用問(wèn)題解決記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05批處理實(shí)現(xiàn)的結(jié)束進(jìn)程并刪除文件的代碼
批處理實(shí)現(xiàn)的結(jié)束進(jìn)程并刪除文件的代碼,挺有創(chuàng)意的,需要的朋友可以參考下。2009-12-12很詳細(xì)的Ghost所有運(yùn)行錯(cuò)誤代碼完全大揭秘
很詳細(xì)的Ghost所有運(yùn)行錯(cuò)誤代碼完全大揭秘...2007-02-02windows下根據(jù)端口號(hào)獲得進(jìn)程名示例
這篇文章主要為大家介紹了windows下根據(jù)端口號(hào)獲得進(jìn)程名示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08