這里主要是帶著(zhù)過(guò)一下相關(guān)的簡(jiǎn)單概念和用法, 是對于有一定的基礎和編寫(xiě)腳本經(jīng)驗的同學(xué)而言, 那么一般下面的用法都是一眼看出作用和原理起到一個(gè)復習的作用。對于不熟悉的可以查詢(xún)相關(guān)命令和百度即可。
批處理中的變量,我把他分為兩類(lèi),分別為”系統變量”和”自定義變量”
他們的值由系統將其根據事先定義的條件自動(dòng)賦值,也就是這些變量系統已經(jīng)給他們定義了值,
不需要我們來(lái)給他賦值,我們只需要調用而以!
在“本地用戶(hù)和組”中指定的。
%LOGONSERVER% 本地 返回驗證當前登錄會(huì )話(huà)的域控制器的名稱(chēng)。 %NUMBER_OF_PROCESSORS% 系統 指定安裝在計算機上的處理器的數目。 %OS% 系統 返回操作系統名稱(chēng)。Windows 2000 顯示其操作系統為 Windows_NT。 %PATH% 系統 指定可執行文件的搜索路徑。 %PATHEXT% 系統 返回操作系統認為可執行的文件擴展名的列表。 %PROCESSOR_ARCHITECTURE% 系統 返回處理器的芯片體系結構。值:x86 或 IA64 基于
Itanium%PROCESSOR_IDENTFIER% 系統 返回處理器說(shuō)明。 %PROCESSOR_LEVEL% 系統 返回計算機上安裝的處理器的型號。 %PROCESSOR_REVISION% 系統 返回處理器的版本號。 %PROMPT% 本地 返回當前解釋程序的命令提示符設置。由 Cmd.exe 生成。 %RANDOM% 系統 返回 0 到 32767 之間的任意十進(jìn)制數字。由 Cmd.exe 生成。 %SYSTEMDRIVE% 系統 返回包含 Windows server operating system 根目錄(即系統根目錄)
NOTE : echo %WINDIR% 這樣就能顯示一個(gè)變量的值
故名思意,自定義變量就是由我們來(lái)給他賦予值的變量
要使用自定義變量就得使用set命令了,看例子.
@echo offset var=我是值echo %var%pause保存為BAT執行,我們會(huì )看到CMD里返回一個(gè) “我是值”
var為變量名,=號右變的是要給變量的值
這就是最簡(jiǎn)單的一種設置變量的方法了
如果我們想讓用戶(hù)手工輸入變量的值,而不是在代碼里指定,可以用用set命令的/p參數
例子:
@echo offset /p var=請輸入變量的值echo %var%pausevar變量名 =號右邊的是提示語(yǔ),不是變量的值
變量的值由我們運行后自己用鍵盤(pán)輸入!
簡(jiǎn)單的介紹了一下SET設置自定義變量的作用,現在我來(lái)具體講一下set的其他功能.
前面已有部分應用, 這里就不加贅述了
set /p 是命令語(yǔ)法 var是變量名 =號右邊的”請輸入變量的值: “,這個(gè)是提示語(yǔ),不是變量的值了!
運行后,我們在提示語(yǔ)后面直接輸入1,就會(huì )顯示一行您輸入了 1 ~_~
好了,先回顧到這,現在講SET其他功能
使用set /?查看SET的幫助我們發(fā)現SET除了我上面講的
SET [variable=[string]]SET /P variable=[promptString]//這兩種語(yǔ)法外,還有如下幾種語(yǔ)法:SET /A expression//環(huán)境變量替換已如下增強:%PATH:str1=str2%%PATH:~10,5%%PATH:~-10%%PATH:~0,-2%這機種語(yǔ)法有什么用處呢?下面我們來(lái)一個(gè)個(gè)講解他們!
語(yǔ)法:SET /A expression
/A 命令行開(kāi)關(guān)指定等號右邊的字符串為被評估的數字表達式。該表達式
評估器很簡(jiǎn)單并以遞減的優(yōu)先權順序支持下列操作:
() -分組
! ~ - -一元運算符
* / % -算數運算符
+ - -算數運算符
<< >> -二進(jìn)制邏輯移位
& -二進(jìn)制按位“與”
^ -二進(jìn)制按位“異”
| -二進(jìn)制按位“或”
= *= /= %= += -= -算數賦值
&= ^= |= <<= >>= -二進(jìn)制運算賦值
, -表達式分隔符
@echo off set /p input=請輸入計算表達式: set /a var=%input% echo 計算結果:%input%=%var% pause好了,符號說(shuō)到這,現在說(shuō)%PATH:str1=str2%
上面語(yǔ)法的意思就是:將字符串變量%PATH%中的str1替換為str2
這個(gè)是替換變量值的內容,看例子
@echo offset a= bbs. verybat. cnecho 替換前的值: "%a%"set var=%a: =%echo 替換后的值: "%var%"pause請注意:字符串的替換和截取功能在引用變量的地方均可以,并不一定必須要有set命令 例: @echo off set
a=bbs.verybat.cn echo 替換前的值: “%a%” echo 替換后的值: “%a:.=傷腦筋%” pause
此例在echo語(yǔ)句中就替換了字符串,效果一樣。
a=bbs.verybat.cn
%a:~1,2% =“bs” 偏移量1,從第二位開(kāi)始向右取2位
%a:~-3% =“.cn” 偏移量負3,即倒數3位(也可理解為留下右邊3位),右取全部
%a:~3% =“.verybat.cn” 偏移量3(也可理解為去掉左邊3位),右取全部
%a:~0,-3% =“bbs.verybat” 偏移量0,右取長(cháng)度至負3,即倒數3位
%a:~2,-3% =“s.verybat” 偏移量2,右取長(cháng)度至負3,即倒數3位
所以,截取功能統一語(yǔ)法格式為: %a:~[m[,n]]%
方括號表示可選,%a%為變量名,不可少,冒號用于分隔變量名和說(shuō)明部分,符號~可以簡(jiǎn)單理解為“偏移”即可,m為偏移量(缺省為0),n為截取長(cháng)度(缺省為全部)
上面所述用法其實(shí)相當于vbs函數mid、left、right
%a:~0,n% 相當于函數left(a,n) 取左邊n位
%a:~-m% 相當于函數right(a,m) 取右邊m位
%a:~m,n% 相當于函數mid(a,m+1,n) 從m+1位開(kāi)始取n位
%a:~m,-n% 相當于函數mid(a,m+1,len(a)-m-n),從m+1位開(kāi)始,至倒數n+1位
%a:~m % 相當于函數mid(a,m+1,len(a)-m) 或者right(a,len(a)-m),從m+1位開(kāi)始取右邊全部。
思考題目:輸入任意字符串,求字符串的長(cháng)度
@echo offset /p str=請輸入任意長(cháng)度的字符串:echo 你輸入了字符串:"%str%"call :stringlenth "%str%" numecho 字符串長(cháng)度為:%num%pauseexit:StringLenth.bat::---------字符串長(cháng)度計算子程序::---------參數%1為字符串(如有空格,請用引號括起來(lái))::---------參數%2為返回變量名稱(chēng),不能含空格或特殊字符::@echo offset theString=%~1if not defined theString goto :eofset Return=0:StringLenth_continueset /a Return+=1set thestring=%thestring:~0,-1%if defined thestring goto StringLenth_continueif not "%2"=="" set %2=%Return%goto :eof結束了變量和set命令的講解, 一般這些內容已經(jīng)能滿(mǎn)足日常的需要了, 在后面, 我們將介紹DOS高級編程的一些基本例子并熟悉DOS
參考文章 :
DOS批處理教程
聯(lián)系客服