DOS批處理命令 字串操作

2022-03-05 12:36:02 字數 2279 閱讀 6304

1、擷取字串

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

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

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

具體有以下幾種擷取方式,看例項去理解用法,這個時候,我們假設有乙個變數【var】,其值為。

①正常路線:

%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中位置

哈哈,這個我還不知道,以後知道了再補上去。如果系統沒有給出方法的話,就只能寫方法查詢了。

批處理 字串操作

批處理有著具有非常強大的字串處理能力,其功能絕不低於c語言裡面的字串函式集。批處理中可實現的字串處理功能有 擷取字串內容 替換字串特定字段 合併字串 擴充字串等功能。下面對這些功能一一進行講解。擷取字串可以說是字串處理功能中最常用的乙個子功能了,能夠實現擷取字串中的特定位置的乙個或多個字元。舉例說明...

批處理Dos命令

來自vista 有關某個命令的詳細資訊,請鍵入 help 命令名 assoc 顯示或修改副檔名關聯。attrib 顯示或更改檔案屬性。break 設定或清除擴充套件式 ctrl c 檢查。bcdedit 設定啟動資料庫中的屬性以控制啟動載入。cacls 顯示或修改檔案的訪問控制列表 acl call...

Redis 命令(字串 String )

redis 127.0 0.1 6379 command key nameredis 127.0 0.1 6379 set runoobkey redis okredis 127.0 0.1 6379 get runoobkey redis 在以上例項中我們使用了set和get命令,鍵為runoob...