下面對(duì)這些功能一一進(jìn)行講解。
1、截取字符串
截取字符串可以說(shuō)是字符串處理功能中最常用的一個(gè)子功能了,能夠?qū)崿F(xiàn)截取字符串中的特定位置的一個(gè)或多個(gè)字符。舉例說(shuō)明其基本功能:
當(dāng)然,上面的例子只是將字符串處理的基本功能展示出來(lái)了,還看不出字符串處理具體有什么用處。下面這個(gè)例子是對(duì)時(shí)間進(jìn)行處理。
2、替換字符串
替換字符串,即將某一字符串中的特定字符或字符串替換為給定的字符串。舉例說(shuō)明其功能:
對(duì)于上面的例子有一點(diǎn)說(shuō)明,對(duì)比兩個(gè)echo aa = %aa%可以發(fā)現(xiàn),如果要修改變量aa的內(nèi)容的話(huà),就需要將修改結(jié)果“%aa:中國(guó)=中華人民共和國(guó)%”賦值給變量aa。上面的字符串截取也有著同樣的特點(diǎn)。
3、字符串合并
其實(shí),合并字符串就是將兩個(gè)字符串放在一起就可以了。舉例說(shuō)明:
同樣,如果要改變變量aa的內(nèi)容的話(huà),就需要將合并結(jié)果“%aa%%bb%”賦值給變量aa。
4、擴(kuò)充字符串
“擴(kuò)充”這個(gè)詞匯來(lái)自于微軟自己的翻譯,意思就是對(duì)表示文件路徑的字符串進(jìn)行特殊的處理,具體功能羅列如下:
=========================================
~I - 刪除任何引號(hào)("),擴(kuò)充 %I
%~fI - 將 %I 擴(kuò)充到一個(gè)完全合格的路徑名
%~dI - 僅將 %I 擴(kuò)充到一個(gè)驅(qū)動(dòng)器號(hào)
%~pI - 僅將 %I 擴(kuò)充到一個(gè)路徑
%~nI - 僅將 %I 擴(kuò)充到一個(gè)文件名
%~xI - 僅將 %I 擴(kuò)充到一個(gè)文件擴(kuò)展名
%~sI - 擴(kuò)充的路徑只含有短名
%~aI - 將 %I 擴(kuò)充到文件的文件屬性
%~tI - 將 %I 擴(kuò)充到文件的日期/時(shí)間
%~zI - 將 %I 擴(kuò)充到文件的大小
%~$PATH:I - 查找列在路徑環(huán)境變量的目錄,并將 %I 擴(kuò)充
到找到的第一個(gè)完全合格的名稱(chēng)。如果環(huán)境變量名
未被定義,或者沒(méi)有找到文件,此組合鍵會(huì)擴(kuò)充到
空字符串
可以組合修飾符來(lái)得到多重結(jié)果:
%~dpI - 僅將 %I 擴(kuò)充到一個(gè)驅(qū)動(dòng)器號(hào)和路徑
%~nxI - 僅將 %I 擴(kuò)充到一個(gè)文件名和擴(kuò)展名
%~fsI - 僅將 %I 擴(kuò)充到一個(gè)帶有短名的完整路徑名
%~dp$PATH:i - 查找列在路徑環(huán)境變量的目錄,并將 %I 擴(kuò)充
到找到的第一個(gè)驅(qū)動(dòng)器號(hào)和路徑。
%~ftzaI - 將 %I 擴(kuò)充到類(lèi)似輸出線路的 DIR
=========================================
以上內(nèi)容引用于for /?幫助信息。其中的I代表變量I,不過(guò)需要說(shuō)明的是,不是所有的變量都能夠進(jìn)行擴(kuò)充的,有兩個(gè)條件:1、該字符串代表一個(gè)文件路徑;2、變量要用%x來(lái)表示,x可取a-z A-Z 0-9共62個(gè)字符中的任意一個(gè)。舉例說(shuō)明:
其中的%0是批處理里面的參數(shù),代表當(dāng)前運(yùn)行的批處理的完全路徑。類(lèi)似的還有%1-%9,分別代表傳遞來(lái)的第1-9個(gè)參數(shù)。例子如下:
其中,變量aa在之前是不可以擴(kuò)充的,通過(guò)call命令并將aa作為參數(shù)傳遞給子函數(shù):deal,將aa變量轉(zhuǎn)換成了變量%1,即符合%x格式,從而可以進(jìn)行字符串?dāng)U充。
至于%x中x取a-z A-Z的形式,可以復(fù)習(xí)一下for語(yǔ)句,for語(yǔ)句里面的變量就是用%x來(lái)表示的,因而可以直接進(jìn)行擴(kuò)充。
下面是其它網(wǎng)友的補(bǔ)充:注意是與c語(yǔ)言做了一些對(duì)比
首先說(shuō)一下,批處理和高級(jí)語(yǔ)言不同,沒(méi)有字符串處理函數(shù),比如strcat之類(lèi)的,但是卻可以利用環(huán)境變量來(lái)實(shí)現(xiàn)這些函數(shù)的功能。
本文對(duì)照C語(yǔ)言中的字符串處理函數(shù),講解在批處理中的實(shí)現(xiàn)方法。
首先說(shuō)一下字符串的存儲(chǔ),在C語(yǔ)言中,采用字符數(shù)組或者字符指針來(lái)存儲(chǔ)字符串,而B(niǎo)AT中沒(méi)有這些東東,所以要依靠環(huán)境變量來(lái)存儲(chǔ)。
設(shè)置環(huán)境變量的語(yǔ)句為set語(yǔ)句,本文不詳細(xì)介紹了,參考set /?語(yǔ)句。
1、C語(yǔ)中的strcpy函數(shù),將一個(gè)字符串復(fù)制到另一個(gè)字符型指針或字符數(shù)組,覆蓋原來(lái)的字符串。
C語(yǔ)言中的調(diào)用方法:strcpy(目標(biāo)字符串,源字符串)
在批處理中的實(shí)現(xiàn)方法:
set 目標(biāo)字符串=%源字符串%
示例:
2、C語(yǔ)中的strcat函數(shù),將一個(gè)字符串連接到另一個(gè)字符型指針或字符數(shù)組的末尾。
C語(yǔ)言中的調(diào)用方法:strcat(目標(biāo)字符串,源字符串)
在批處理中的實(shí)現(xiàn)方法:
set 目標(biāo)字符串=%目標(biāo)字符串%%源字符串%
示例:
3、字符串截取,C中沒(méi)有這種函數(shù),不過(guò)可以通過(guò)語(yǔ)句實(shí)現(xiàn),不再介紹,直接說(shuō)批處理的。
set 目標(biāo)字符串=%源字符串:~起始值,截取長(zhǎng)度%
注意,起始值從0開(kāi)始!
截取長(zhǎng)度是可選的,如果省略逗號(hào)和截取長(zhǎng)度,將會(huì)從起始值一直截取到字符串的結(jié)尾。
示例:
4、C語(yǔ)中的strlen函數(shù),取得字符串的長(zhǎng)度。
C語(yǔ)言中的調(diào)用方法:strlen(字符串)
在批處理中的實(shí)現(xiàn)方法是利用goto和標(biāo)簽,形成循環(huán)結(jié)構(gòu),不斷將字符串截短1字符,并用變量記錄截短的次數(shù),直到字符串變成空串。
示例:
5、C語(yǔ)中的strchr函數(shù),在一個(gè)字符串中查找一個(gè)字符的首次出現(xiàn)位置,找到時(shí)返回所在位置,找不到時(shí)返回0值。
批處理中的思路:不斷截短字符串,并取截短后字符串中的首字符,和要求的字符比較,如果相同就利用goto語(yǔ)句跳出循環(huán),輸出結(jié)果,如果沒(méi)有相同的字符,執(zhí)行到最后就輸出0值。
示例:
引用:
最后出幾道題,看看大家學(xué)習(xí)的怎么樣!
(1)如何實(shí)現(xiàn)C語(yǔ)言中strstr函數(shù)的功能?
提示:strstr函數(shù)的功能是在字符串1中查找字符串2,找到時(shí)返回串2首次出現(xiàn)的位置,否則返回0值。與strchr區(qū)別就是,第二個(gè)參數(shù)是字符串,而不是字符了。
(2)如何用批處理構(gòu)建while循環(huán)?
提示:while循環(huán)一般格式為:
while(表達(dá)式)
{
循環(huán)體
[break|continue;]
循環(huán)體
}
其中,循環(huán)體為0條或多條語(yǔ)句,break用于跳出循環(huán),continue用于直接判斷表達(dá)式并決定是否進(jìn)入下一次循環(huán)。
一般執(zhí)行順序:首先判斷表達(dá)式,如果成立則進(jìn)入循環(huán),循環(huán)體執(zhí)行完畢后再次判斷表達(dá)式的值,決定是否再次循環(huán)。
(3)如何用批處理構(gòu)建do-while循環(huán)?
提示:do-while循環(huán)一般格式為:
do
{
循環(huán)體
[break|continue;]
循環(huán)體
}while(表達(dá)式);
各個(gè)語(yǔ)句的解釋參照while循環(huán)。
一般執(zhí)行順序:首先進(jìn)入循環(huán),循環(huán)體執(zhí)行完畢后判斷表達(dá)式的值,表達(dá)式成立則再次進(jìn)入循環(huán)。
標(biāo)簽:白銀 蕪湖 江西 樂(lè)山 三門(mén)峽 公主嶺 株洲 臺(tái)州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《BAT批處理中的字符串處理詳解(字符串截取)》,本文關(guān)鍵詞 BAT,批處理,中的,字符串,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。