DOS批處理命令-字符串操作

http://www.cnblogs.com/liuhy/p/3223517.html
DOS批處理命令-字符串操作
 1、截取字符串


從指定變量中截取指定位置的字符串,並返回。*這個處理,並不改變變量的值


語法格式:%變量名:~開始位置,終了位置% 


注:正數的時候開始位置是從0開始向右計算,負數的時候從1開始向右計算。(跳的個數爲指定開始位置的絕對值)


具體有以下幾種截取方式,看實例去理解用法,這個時候,我們假設有一個變量【var】,其值爲【1234567890】。


①正常路線:


%var:~5,2% ? 67


②無終了:


%var:~5% ? 67890


③負終了:


%var:~5,-2% ? 678


④負開始位置:


%var:~-6,2% ? 56


⑤負開始無終了:


%var:~-6% ? 567890


⑥負開始負終了:


%var:~-6,-2% ? 5678


⑦沒有開始:


%var:~,4% ? 1234


⑧無開始無終了:


%var% ? 1234567890


正常的情況下,就這幾種截取的情況,完全可以根據我們業務的需要,來使用不同的方法來截取字符串。


這個字符串截取中,還是有幾個規律的


A、開始位置的計算:當開始位置指定爲正數的時候,我們就可以從左側開始查找開始位置(左側第一個字符爲0)


              當開始位置省略或者爲0的時候,開始位置那個字符就是要截取的開始字符。


              當開始位置指定爲負數的時候,我們就可以從右側開始查找指定位置(右側第一個字符爲-1)


B、終了位置的計算:當終了位置指定爲正數的時候,我們就可以從上述計算得到的終了位置查找終了位置(開始位置爲1)


              當終了位置省略或者爲0的時候,字符串的終了位置就是要截取字符串的終了位置


              當終了位置指定爲負數的時候,我們就可以從右側開始查找指定位置(右側第一個字符爲0)


C、最終截取的字符串就是開始位置到終了位置之間的字符串(包括開始位置和終了位置)


------------------------------------------------------------------------------------------------------------------------------------------------------


但是,這個字符串截取是不是有異常發生呢?有,也沒有。


當要截取的字符串不爲空,並且,要截出的字符串不不能正常截出的時候,返回結果就是空值。


當要截取的字符串本身就是空的時候,取得結果就是【~開始位置,終了位置】,也就是命令的一部分被返回出來。


接下來繼續討論這個問題,既然要截取的字符串爲空的時候,解出來的東西乖乖的,那我們能不能不讓它進去呢?當然,我們使用我們已知的字符串判斷函數就是可以的。


例如下面代碼的處理:


複製代碼
@echo off


set var=


IF DEFINED var (
    echo DEFINED
    echo %var:~1,1%
) else (
    echo NOT DEFINED
)
複製代碼
運行結果爲:


F:\tmp>a.bat
NOT DEFINED


可見,當var爲空的時候,分支根本就沒有走進去。程序顯然沒有走進去,


當分歧沒有進去的時候,在該分歧內,我即使寫不合法的命令,也不會報錯的,不信你可以試試,反正我是試過了。


但是,下面這一點,就有點費解了,且看代碼:


複製代碼
@echo off


set var=


IF DEFINED var (
    echo DEFINED
    IF %var:~1,1% EQU A (
        echo true
    )
) else (
    echo NOT DEFINED
)
複製代碼
這個時候,紅色字體部分雖然跑不到,但是,竟然跑不過,所以,我就鬱悶了。(報1的使用方法不對。--1 の使い方が誤っています。)


batch程序的執行方式是什麼的?不知道,想知道,但是,又不知道到哪裏知道去。


 


2、字符串替換


字符串替換,就是把某一字符串中的特定字符或字符串替換爲給定的字符串


語法結構:%變量名:替換前=替換後%


替換前不可以爲空,但是,替換後可以爲空


還有一點,變換前和變換後不能用變量表示,而變量名只能有變量名來表示。


例:%var:123=abc%


 


3.字符串拼接,直接將兩個字符串放到一塊兒就可以了。


例如:字符串123和abc拼接,那麼就可以寫成123abc


如果是字符串變量123和abc拼接,那麼就可以寫成%123%%abc%


 


4、字符串查找,例如,查找字符串345在字符串123456789123456789中位置


哈哈,這個我還不知道,以後知道了再補上去。如果系統沒有給出方法的話,就只能寫方法查找了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章