字串處理
批處理有著具有非常強大的字串處理能力,其功能絕不低於c語言裡面的字串函式集。批處理中可實現的字串處理功能有:擷取字串內容、替換字串特定字段、合併字串、擴充字串等功能。下面對這些功能一一進行講解。
1.擷取字串
擷取字串可以說是字串處理功能中最常用的乙個子功能了,能夠實現擷取字串中的特定位置的乙個或多個字元。舉例 說明其基本功能:
@echo off
set ifo=abcdefghijklmnopqrstuvwxyz0 12 3456789
echo 原字串(第二行為各字元的序號):
echo %ifo%
echo 1234567890 123 45678901234567890123456
echo 擷取前5個字元:
echo %ifo:~0,5%
echo 擷取最後5個字元:
echo %ifo:~-5%
echo 擷取第乙個到倒數第6個字元:
echo %ifo:~0,-5%
echo 從第4個字元開始,擷取5個字元:
echo %ifo:~3,5%
echo 從倒數第14個字元開始,擷取5個字元:
echo %ifo:~-14,5%
pause
當然,上面的例子只是將字串處理的基本功能展示出來了,還看不出字串處理具體有什麼用處。下面這個例子是對時間進行處理。
@echo off
echo 當前時間是:%time% 即 %time:~0,2%點%time:~3,2%分%time:~6,2%秒%time:~9,2%釐秒
pause
2.替換字串
替換字串,即將某一字串中的特定字元或字串替換為給定的字串。舉例說明其功能:
@echo off
set aa=偉大的中國!我為你自豪!
echo 替換前:%aa%
echo 替換後:%aa:中國=中華人民共和國%
echo aa = %aa%
set "aa=%aa:中國=中華人民共和國%"
echo aa = %aa%
pause
對於上面的例子有一點說明,對比兩個echo aa = %aa%可以發現,如果要修改變數aa的內容的話,就需要將修改結果「%aa: 中國=中華人民共和國%」賦值給變數aa。上面的字串擷取也有著同樣的特點。
3.字串合併
其實,合併字串就是將兩個字串放在一起就可以了。舉例說明:
@echo off
set aa=偉大的中國!
set bb=我為你自豪!
echo %aa%%bb%
echo aa=%aa%
echo bb=%bb%
set "aa=%aa%%bb%"
echo aa=%aa%
pause
同樣,如果要改變變數aa的內容的話,就需要將合併結果「%aa%%bb%」賦值給變數aa。
4.擴充字串
數值計算
批處理裡面的數值計算功能較弱,只能夠進行整型計算,忽略浮點數的小數部分;同時數值計算的範圍也受限於系統位數,對於目前較為常見的32位機來說,數值計算能處理的數值範圍為0x80000000h~0x7fffffffh,即-2147483648~+2147483647。
數值計算需要使用set命令,具體格式為「set /a expression」。其中,expression代表計算表示式,計算表示式跟c語言裡面的表示式基本上完全一致。set支援的運算子也跟c語言裡面的一樣,只是沒有了増一減一。set支援的運算子及優先順序排序如下:
****************************************=
() - 分組
! ~ - - 一元運算子(邏輯非、按位非、取負)
* / % - 算數運算子(乘、除得商、除得餘數,即取餘)
+ - - 算數運算子(加、減)
<< >> - 邏輯移位(左移一位、右移一位)
& - 按位「與」
^ - 按位「異」
| - 按位「或」
= *= /= %= += -= - 賦值
&= ^= |= <<= >>=
, - 表示式分隔符(set可一次處理多個表示式)
****************************************=
我們知道,批處理中取變數的值是需要用%或者!的,而在set /a 中,直接用變數名稱即可取得變數的值。另外,set支援八進位制(數字字首0)、十進位制(數字無字首)和十六進製制(數字字首0x),且支援不同進製之間的計算,如set /a a=123+0123+0x123,計算及顯示結果為十進位制。
批處理 字串操作
批處理有著具有非常強大的字串處理能力,其功能絕不低於c語言裡面的字串函式集。批處理中可實現的字串處理功能有 擷取字串內容 替換字串特定字段 合併字串 擴充字串等功能。下面對這些功能一一進行講解。擷取字串可以說是字串處理功能中最常用的乙個子功能了,能夠實現擷取字串中的特定位置的乙個或多個字元。舉例說明...
批處理中的字串處理詳解
來自 http hi.baidu.com microalex blog item 4e7df9f48be7bdddf2d385d5.html 首先說一下,批處理和高階語言不同,沒有字串處理函式,比如strcat之類的,但是卻可以利用環境變數來實現這些函式的功能。本文對照c語言中的字串處理函式,講解在...
批處理中的字串處理詳解
首先說一下,批處理和高階語言不同,沒有字串處理函式,比如strcat之類的,但是卻可以利用環境變數來實現這些函式的功能。本文對照c語言中的字串處理函式,講解在批處理中的實現方法。首先說一下字串的儲存,在c語言中,採用字元陣列或者字元指標來儲存字串,而bat中沒有這些東東,所以要依靠環境變數來儲存。1...