先回顧一下他設定自定義變量的用法
例子:
@echo off
setvar=我是值
echo%var%
pause
請看setvar=我是值,
set是指令 var是變量名 =号右邊的"我是值"是變量的值
在批進行中我們要引用這個變就把var變量名用兩個%(百分号)擴起來,如%var%
這種set文法隻能直接在bat代碼的提前賦予變量的值,有時候我們需要提供一個互動界面,讓
使用者自己輸入變量的值,然後我們在來根據這個值來做相應操作,現在我就來說說這set的這
種文法,隻需要加一個"/p"
set/p var=請輸入變量的值:
if%var%==1 echo 您輸入了 1~_~
set/p 是指令文法 var是變量名 =号右邊的"請輸入變量的值: ",這個是提示語,不是變
運作後,我們在提示語後面直接輸入1,就會顯示一行您輸入了 1~_~,輸入别的就沒有任何反
好了,先回顧到這,現在講set其他功能
使用set/?檢視set的幫助我們發現set除了我上面講的
set[variable=[string]]
set/p variable=[promptstring]
這兩種文法外,還有如下幾種文法:
set/a expression
環境變量替換已如下增強:
%path:str1=str2%
%path:~10,5%
%path:~-10%
%path:~0,-2%
這機種文法有什麼用處呢?
set/a expression
/a 指令行開關指定等号右邊的字元串為被評估的數字表達式。該表達式
評估器很簡單并以遞減的優先權順序支援下列操作:
() -分組
!~- -一進制運算符
*/% -算數運算符
+- -算數運算符
<<>> -邏輯移位
& -按位“與”
^ -按位“異”
| -按位“或”
=*=/=%=+=-= -指派
&=^=|=<<=>>=
, -表達式分隔符
上面這些是系統幫助裡的内容,看着是不是有點暈,沒關系我來簡單解釋一下:
set的/
現在開始舉例子介紹這些數學符号的用法:
看例子 這裡的例子請直接在cmd下拷貝指令運作,
set/a var=1+1
set/a 文法,var變量名 1+1 數學式子
拷貝運作後會直接顯示一個2,或者運作完後我們輸入echo%var%,也是二,這就是
set/a var=2-1 結果是多少呢?如果你看不到結果就echo%var%.....
set/a var=2*2 乘法運算
set/a var=2/2 除法運算
set/a var=(1+1)+(1+1)結果等于4
set/a a=1+1,b=2+1,c=3+1 運作後會顯示一個4,但我們用
echo%a%%b%%c%後看結果,會發現其他數學運算也有效果!,這就是"鬥"号的
有時候我們需要直接在原變量進行加減操作就可以用這種文法
set/a var+=1 這樣的文法對應原始文法就是set/a var=%var%+1
都是一樣的結果,在原變量的值上在進行數學運算,不過這樣寫簡單一點
在來一個:
set/a var*=2
其他都這麼用,
另外還有一些用邏輯或取餘操作符,這些符号,按照上面的使用方法會報錯的
比如我們在cmd裡輸入set/a var=1&1"與運算",他并不會顯示為1,而是報錯,
為什麼?對于這樣的"邏輯或取餘操作符",我們需要把他們用雙引号引起來,看例子
set/a var=1"&"1 這樣結果就顯示出來了,其他邏輯或取餘操作符用法
set/a var=1"+"1 異運算
set/a var=1"%"1 取模運算
set/a var=2"<<"2 次方運算
set/a var=4">>"2 這個不太記得數學裡的叫法....
還有幾個數學不太行,搞不清楚了....不列出來了,
這些符号也可以用&=^=|=&lt;&lt;=&gt;&gt;=這樣的簡單用法如
set/a var"&="1 等于set/a var=%var%"&"1 注意引号
好符号說到這,現在說%path:str1=str2%
這個是替換變量值的内容,看例子
seta=bbs.verybat.cn
echo 替換前的值:"%a%"
setvar=%a:=%
echo 替換後的值:"%var%"
對比一下,我們發現他把變量%a%的空格給替換掉了,從這個例子,我們就可以發現
%path:str1=str2%這個操作就是把變量%path%的裡的str1全部用str2替換
比如我們把上面的例子改成這樣
setvar=%a:.=傷腦筋%
解釋set var=%a:.=傷腦筋%
set指令 var變量名 字a是要進行字元替換的變量的值,"."為要替換的值,
"傷腦筋"
執行後就會把變量%a%裡面的"."全部替換為"傷腦筋"
這就是set的替換字元的很好的功能!先講到這
%path:~10,5% 這個什麼意思,看例子:
setvar=%a:~1,2%
執行後,我們會發現隻顯示了"bs"兩個字母,我們的變量%a%的值不是為bbs.verybat.cn嗎
怎麼隻顯示了第2個字母和第3個字母"bs",分析一結果我們就可以很容易看出
分析set var=%a:~1,2%
set指令 var變量值 a要進行字元操作的變量"1"從變量"a"第幾位開始顯示"2"顯示幾位
和起來就是把變量a的值從第一位開始,把後兩位賦予給變量var
就樣因該明白了吧~
其他兩種文法
他們也是顯示指定變量指定幾位的值得的意思
%path:~-10%例子
setvar=%a:~-3%
這個就是把變量a倒數3位的值給變量var
當然我們也可以改成這樣
setvar=%a:~3%
這個就是把變量a的從第3位開始後面全部的值給變量var
%path:~0,-2% 例子
setvar=%a:~0,-3%
執行後,我們發現顯示的是"bbs.verybat",少了".cn"
從結果分析,很容易分析出,這是把變量a的值從0位開始,
到倒數第三位之間的值全部賦予給var
如果改成這樣
setvar=%a:~2,-3%
那麼他就是顯示從第2位開始減去倒數三位字元的值,并賦予給變量var
好了set的一些用法,就介紹到這了,希望對各位有所幫助,時間不早睡覺zz....