DOS中SET命令的詳細(xì)用法

DOS中SET命令的詳細(xì)用法

例子:

@echo off

set var=我是值

echo %var%

pause

請(qǐng)看 set var=我是值 ,這就是BAT直接在批處理中設(shè)置變量的方法!

set 是命令 var是變量名 =號(hào)右邊的"我是值"是變量的值

在批處理中我們要引用這個(gè)變就把var變量名用兩個(gè)%(百分號(hào))擴(kuò)起來(lái),如%var%

這種SET語(yǔ)法只能直接在BAT代碼的提前賦予變量的值,有時(shí)候我們需要提供一個(gè)交互界面,讓

用戶自己輸入變量的值,然后我們?cè)趤?lái)根據(jù)這個(gè)值來(lái)做相應(yīng)操作,現(xiàn)在我就來(lái)說(shuō)說(shuō)這SET的這

種語(yǔ)法,只需要加一個(gè)"/P"參數(shù)就可以了!

例子:

@echo off

set /p var=請(qǐng)輸入變量的值:

if %var% == 1 echo 您輸入了 1 ~_~

pause

set /p 是命令語(yǔ)法 var是變量名 =號(hào)右邊的"請(qǐng)輸入變量的值: ",這個(gè)是提示語(yǔ),不是變

量的值了!

運(yùn)行后,我們?cè)谔崾菊Z(yǔ)后面直接輸入1,就會(huì)顯示一行您輸入了 1 _ ,輸入別的就沒(méi)有任何反

映!

好了,先回顧到這,現(xiàn)在講SET其他功能

使用set /?查看SET的幫助我們發(fā)現(xiàn)SET除了我上面講的

SET [variable=[string]]

SET /P variable=[promptString]

這兩種語(yǔ)法外,還有如下幾種語(yǔ)法:

SET /A expression

環(huán)境變量替換已如下增強(qiáng):

%PATH:str1=str2%

%PATH:~10,5%

%PATH:~-10%

%PATH:~0,-2%

這機(jī)種語(yǔ)法有什么用處呢?現(xiàn)在我們來(lái)一個(gè)個(gè)講解他們!

SET /A expression

/A 命令行開(kāi)關(guān)指定等號(hào)右邊的字符串為被評(píng)估的數(shù)字表達(dá)式。該表達(dá)式

評(píng)估器很簡(jiǎn)單并以遞減的優(yōu)先權(quán)順序支持下列操作:

()                  - 分組

! ~ -               - 一元運(yùn)算符

* / %               - 算數(shù)運(yùn)算符

+ -                 - 算數(shù)運(yùn)算符

<< >>               - 邏輯移位

&                   - 按位“與”

^                   - 按位“異”

|                   - 按位“或”

= *= /= %= += -=    - 賦值

  &= ^= |= <<= >>=

,                   - 表達(dá)式分隔符

上面這些是系統(tǒng)幫助里的內(nèi)容,看著是不是有點(diǎn)暈,沒(méi)關(guān)系我來(lái)簡(jiǎn)單解釋一下:

set的/A參數(shù)就是讓SET可以支持?jǐn)?shù)學(xué)符號(hào)進(jìn)行加減等一些數(shù)學(xué)運(yùn)算!

現(xiàn)在開(kāi)始舉例子介紹這些數(shù)學(xué)符號(hào)的用法:

看例子 這里的例子請(qǐng)直接在CMD下拷貝命令運(yùn)行,不需要保存為BAT!

set /a var=1 + 1

set /a 語(yǔ)法, var變量名 1 + 1 數(shù)學(xué)式子

拷貝運(yùn)行后會(huì)直接顯示一個(gè)2,或者運(yùn)行完后我們輸入echo %var%,也是二,這就是

一個(gè)簡(jiǎn)單的加法運(yùn)算!

set /a var=2 - 1  ::結(jié)果是多少呢?如果你看不到結(jié)果就echo %var%.....

set /a var=2 * 2 ::乘法運(yùn)算

set /a var=2 / 2 ::除法運(yùn)算

set /a var=(1+1) + (1+1) ::結(jié)果等于4 看得懂吧!

set /a a=1+1,b=2+1,c=3+1 :: 運(yùn)行后會(huì)顯示一個(gè)4,但我們用

echo %a% %b% %c% ::后看結(jié)果,會(huì)發(fā)現(xiàn)其他數(shù)學(xué)運(yùn)算也有效果!

這就是"斗"號(hào)的作用!

有時(shí)候我們需要直接在原變量進(jìn)行加減操作就可以用這種語(yǔ)法

set /a var+=1 這樣的語(yǔ)法對(duì)應(yīng)原始語(yǔ)法就是 set /a var = %var% + 1

都是一樣的結(jié)果,在原變量的值上在進(jìn)行數(shù)學(xué)運(yùn)算,不過(guò)這樣寫簡(jiǎn)單一點(diǎn)

在來(lái)一個(gè):

set /a var*=2

其他都這么用,只要幫助里有這個(gè)語(yǔ)法!

另外還有一些用邏輯或取余操作符,這些符號(hào),按照上面的使用方法會(huì)報(bào)錯(cuò)的

比如我們?cè)贑MD里輸入set /a var=1 & 1 "與運(yùn)算",他并不會(huì)顯示為1,而是報(bào)錯(cuò),

為什么?對(duì)于這樣的"邏輯或取余操作符",我們需要把他們用雙引號(hào)引起來(lái),看例子

set /a var= 1 "&" 1 這樣結(jié)果就顯示出來(lái)了,其他邏輯或取余操作符用法

set /a var= 1 "+" 1 異運(yùn)算

set /a var= 1 "%" 1  取模運(yùn)算

set /a var= 2 "<<" 2 次方運(yùn)算

set /a var= 4 ">>" 2 這個(gè)不太記得數(shù)學(xué)里的叫法....

還有幾個(gè)數(shù)學(xué)不太行,搞不清楚了....不列出來(lái)了,

這些符號(hào)也可以用&= ^= |= <<= >>= 這樣的簡(jiǎn)單用法如

set /a var"&=" 1 等于set /a var = %var% "&" 1注意引號(hào)

好符號(hào)說(shuō)到這,現(xiàn)在說(shuō)%PATH:str1=str2%

這個(gè)是替換變量值的內(nèi)容,看例子

@echo off

set a= bbs.verybat.cn

echo 替換前的值: "%a%"

set var=%a: =%

echo 替換后的值: "%var%"

pause

對(duì)比一下,我們發(fā)現(xiàn)他把變量%a%的空格給替換掉了,從這個(gè)例子,我們就可以發(fā)現(xiàn)

%PATH:str1=str2%這個(gè)操作就是把變量%PATH%的里的str1全部用str2替換

比如我們把上面的例子改成這樣

@echo off

set a=bbs.verybat.cn

echo 替換前的值: "%a%"

set var=%a:.=傷腦筋%

echo 替換后的值: "%var%"

pause

解釋set var=%a:.=傷腦筋%

set命令 var變量名 字a是要進(jìn)行字符替換的變量的值,"."為要替換的值,

"傷腦筋"為替換后的值!

執(zhí)行后就會(huì)把變量%a%里面的"."全部替換為"傷腦筋"

這就是set的替換字符的很好的功能!先講到這

%PATH:~10,5% 這個(gè)什么意思,看例子:

@echo off

set a=bbs.verybat.cn

set var=%a:~1,2%

echo %var%

pause

執(zhí)行后,我們會(huì)發(fā)現(xiàn)只顯示了"bs"兩個(gè)字母,我們的變量%a%的值不是為bbs.verybat.cn嗎

怎么只顯示了第2個(gè)字母和第3個(gè)字母"bs",分析一結(jié)果我們就可以很容易看出

%PATH:~10,5%就是顯示變量PATH里指定幾位的值!

分析set var=%a:~1,2%

set命令 var變量值 a要進(jìn)行字符操作的變量 "1"從變量"a"第幾位開(kāi)始顯示 "2"顯示幾位

和起來(lái)就是把變量a的值從第一位開(kāi)始,把后兩位賦予給變量var

就樣因該明白了吧~

其他兩種語(yǔ)法

%PATH:~-10%

%PATH:~0,-2%

他們也是顯示指定變量指定幾位的值得的意思

%PATH:~-10% 例子

@echo off

set a=bbs.verybat.cn

set var=%a:~-3%

echo %var%

pause

這個(gè)就是把變量a倒數(shù)3位的值給變量VAR

當(dāng)然我們也可以改成這樣

@echo off

set a=bbs.verybat.cn

set var=%a:~3%

echo %var%

pause

這個(gè)就是把變量a的前3位的值給變量VAR

%PATH:~0,-2%  例子

@echo off

set a=bbs.verybat.cn

set var=%a:~0,-3%

echo %var%

pause

執(zhí)行后,我們發(fā)現(xiàn)顯示的是"bbs.verybat",少了".cn"

從結(jié)果分析,很容易分析出,這是把變量a的值從0位開(kāi)始,

顯示變量a總位數(shù)-3的位的值得(我們給變量a的的值bbs.verybat有11位,11-3=8),這樣他就

只顯示從第0位開(kāi)始到第8位的值,并賦予給變量var

如果改成這樣

@echo off

set a=bbs.verybat.cn

set var=%a:~2,-3%

echo %var%

pause

那么他就是顯示從第2位開(kāi)始到第8位的值,并賦予給變量var.

以上!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容