bat set命令

一、BAT直接在批處理中顯示變量
例子:
@echo off
set var=我是值
echo %var%
pause

請看 set var=我是值 ,這就是BAT直接在批處理中設置變量的方法!
set 是命令 var是變量名 =號右邊的"我是值"是變量的值
在批處理中我們要引用這個變就把var變量名用兩個%(百分號)擴起來,如%var%


這種SET語法只能直接在BAT代碼的酸前賦予變量的值,有時候我們需要提供一個交互界面,讓
用戶自己輸入變量的值,然後我們在來根據這個值來做相應操作,現在我就來說說這SET的這
種語法,只需要加一個"/P"參數就可以了!
二、設置變量
例子:
@echo off
set /p var=請輸入變量的值: 
if %var% == 1 echo 您輸入了 1 ~_~ 
pause

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%

這機種語法有什麼用處呢?現在我們來一個個講解他們!
三、帶參數/A的數值計算
SET /A expression 
/A 命令行開關指定等號右邊的字符串爲被評估的數字表達式。該表達式
評估器很簡單並以遞減的優先權順序支持下列操作:
() - 分組
! ~ - - 一元運算符
* / % - 算數運算符
+ - - 算數運算符
<< >> - 邏輯移位
& - 按位“與”
^ - 按位“異”
| - 按位“或”
= *= /= %= += -= - 賦值
&= ^= |= <<= >>=
, - 表達式分隔符


上面這些是系統幫助裏的內容,看着是不是有點暈,沒關係我來簡單解釋一下:
set的/A參數就是讓SET可以支持數學符號進行加減等一些數學運算!

現在開始舉例子介紹這些數學符號的用法:
看例子 這裏的例子請直接在CMD下拷貝命令運行,不需要保存爲BAT!
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 這個不太記得數學裏的叫法....
還有幾個數學不太行,搞不清楚了....不列出來了,
這些符號也可以用&= ^= |= <<= >>= 這樣的簡單用法如
set /a var"&=" 1 等於set /a var = %var% "&" 1 注意引號

好符號說到這,現在說%PATH:str1=str2%
這個是替換變量值的內容,看例子
@echo off
set a= bbs.verybat.cn
echo 替換前的值: "%a%"
set var=%a: =%
echo 替換後的值: "%var%"
pause

對比一下,我們發現他把變量%a%的空格給替換掉了,從這個例子,我們就可以發現
%PATH:str1=str2%這個操作就是把變量%PATH%的裏的str1全部用str2替換

比如我們把上面的例子改成這樣
@echo off
set a=bbs.verybat.cn
echo 替換前的值: "%a%"
set var=%a:.=傷腦筋%
echo 替換後的值: "%var%"
pause

解釋set var=%a:.=傷腦筋%
set命令 var變量名 字a是要進行字符替換的變量的值,"."爲要替換的值,
"傷腦筋"爲替換後的值!
執行後就會把變量%a%裏面的"."全部替換爲"傷腦筋"
這就是set的隨換字符的很好的功能!先講到這

%PATH:~10,5% 這個什麼意思,看例子:

@echo off
set a=bbs.verybat.cn
set var=%a:~1,2%
echo %var%
pause

執行後,我們會發現只顯示了"bs"兩個字母,我們的變量%a%的值不是爲bbs.verybat.cn嗎
怎麼只顯示了第2個字母和第3個字母"bs",分析一結果我們就可以很容易看出
%PATH:~10,5%就是顯示變量PATH裏指定幾位的值!
分析set var=%a:~1,2%
set命令 var變量值 a要進行字符操作的變量 "1"從變量"a"第幾位開始顯示 "2"顯示幾位
和起來就是把變量a的值從第一位開始,把後兩位賦予給變量var
就樣因該明白了吧~

其他兩種語法
%PATH:~-10%
%PATH:~0,-2%
他們也是顯示指定變量指定幾位的值得的意思

%PATH:~-10% 例子

@echo off
set a=bbs.verybat.cn
set var=%a:~-3%
echo %var%
pause
這個就是把變量a倒數3位的值給變量VAR

當然我們也可以改成這樣
@echo off
set a=bbs.verybat.cn
set var=%a:~3%
echo %var%
pause

這個就是把變量a的從第3位開始後面全部的值給變量VAR

%PATH:~0,-2% 例子

@echo off
set a=bbs.verybat.cn
set var=%a:~0,-3%
echo %var%
pause
執行後,我們發現顯示的是"bbs.verybat",少了".cn"
從結果分析,很容易分析出,這是把變量a的值從0位開始,
到倒數第三位之間的值全部賦予給var

四、帶參數/P的set等待用戶輸入

set /p XUANXIANG= 
if "%XUANXIANG%"=="1" goto 1
if "%XUANXIANG%"=="2" goto 2
if "%XUANXIANG%"=="3" goto 3
根據用戶輸入的數字來選擇跳轉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章