靈活實用VBS入門教程應用篇
更新時間:2007年02月25日 00:00:00 作者:
上一篇文章我們了解了VBS編程的一些基礎(chǔ)知識,要更深入地學習還要學習選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
選擇結(jié)構(gòu)
選擇結(jié)構(gòu),即是對條件進行判斷,然后根據(jù)判斷的結(jié)果,選擇執(zhí)行不同的分支的結(jié)構(gòu)。常見的有IF條件語句和Select Case語句。
●IF條件語句
IF條件語句又有多種具體的形式,如If…Then、If…Then…Else、If…Then…ElseIf。下面分別用例程來說明。用筆記本編寫一個如下內(nèi)容的VBS腳本:
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
if a>b then
MsgBox("第一個數(shù)大于第二個數(shù)")
End if
運行后,要求用戶輸入兩個數(shù)字,第一個數(shù)字的值賦給a,第二個數(shù)字的值賦給b,然后程序自動判斷a和b,如果a的值大于b的值,就彈出信息提示框,顯示“第一個數(shù)大于第二個數(shù)”。注意:then后面的語句不與then在同一行時,判斷語句結(jié)束后要加一行End if來結(jié)束,否則程序會結(jié)束。如果是同一行的就不用再加上End if了,如上面的語句可改為:
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
if a>b then MsgBox("第一個數(shù)大于第二個數(shù)")
另外一個程序中可以用多個If語句,我們可以把上面的程序完善一下如下:
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
If a>b then
MsgBox("第一個數(shù)大于第二個數(shù)")
End if
If a=b then
MsgBox(“第一個數(shù)等于第二個數(shù)”)
End if
If a<b then
MsgBox(“第一個數(shù)小于第二個數(shù)”)
End if
我們也可以再換用IF的其它語句If…Then…Else和If…Then….Elseif來實現(xiàn)相同的作用,如下:
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
If a>b then
MsgBox("第一個數(shù)大于第二個數(shù)")
Else
IF a=b then
MsgBox(“第一個數(shù)等于第二個數(shù)”)
Else
MsgBox(“第一個數(shù)小于第二個數(shù)”)
End if
End if
――――――――――――――――――――――――――――――――――――――
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
If a>b then
MsgBox("第一個數(shù)大于第二個數(shù)")
Elseif a=b then
MsgBox(“第一個數(shù)等于第二個數(shù)”)
Else
MsgBox(“第一個數(shù)小于第二個數(shù)”)
End if
●Select Case語句
Select Case語句是多分支結(jié)構(gòu)的另一種表示形式,它具有表示直觀的特點,結(jié)構(gòu)簡單,不容易導致混亂,它的語法形式如下:
Select Case 變量或表達式
Case 表達式1
語句1
Case 表達式2
語句2
End Select
現(xiàn)在我們用Select Case語句來寫一個數(shù)字轉(zhuǎn)換成英文的程序,體驗一下Select Case的優(yōu)點,Let's go?。?!
dim a
a=inputbox("輸入一個數(shù)字","輸入")
Select Case a
Case 1
MsgBox("你輸入的數(shù)英文是One")
Case 2
MsgBox("你輸入的數(shù)英文是Two")
Case 3
MsgBox("你輸入的數(shù)英文是Tree")
Case 4
MsgBox("你輸入的數(shù)英文是Four")
End Select
從上面,是不是覺得Select Case語句很直觀呢,如果用If語句的話,肯定會很混亂,甚至會把人都給看暈了。還要注意的是無論是條件語句有多少個分支,只要一個分支執(zhí)行了,其余的分支就不再執(zhí)行。
循環(huán)結(jié)構(gòu)
●For循環(huán)語句
For語句是用來控制循環(huán)次數(shù)已知的循環(huán)結(jié)構(gòu)的,語句如下:
For 循環(huán)變量=初值 To 終值 [步長]
語句
[Exit for] '退出循環(huán)語句
Next
現(xiàn)在我們編寫一個計算從1加到100的整數(shù)和的程序,深入去了解For的用法,程序內(nèi)容如下:
dim s
s=0
for i=1 to 100
s=s+i
next
msgbox(s)
這段程序也是經(jīng)典的程序之一,它首先聲明了一個變量S,然后給S賦個初始值0,for i=1 to 100語句讓i隨著每一次循環(huán)加1,循環(huán)體內(nèi)的語句s=s+i也隨著i的增加進行累加,一直加到i=100時結(jié)束循環(huán)。Next語句讓循環(huán)體進入下一次循環(huán)。
●Do…loop循環(huán)語句
For循環(huán)語句用于控制循環(huán)次數(shù)已知的循環(huán),而Do…loop則是用于控制次數(shù)未知的循環(huán),根據(jù)設(shè)定的條件控制循環(huán)。它有兩種形式,一種是先判斷后執(zhí)行,另一形式是先執(zhí)行后判斷。
先判斷后執(zhí)行語法形式:
Do [while/until 條件]
語句
[Exit Do] ‘退出循環(huán)
Loop
先執(zhí)行后判斷語法形式:
Do
語句
[Exit Do]
Loop [while/until 條件]
下面我們用Do…Loop語句來改寫上面的計算1到100的整數(shù)和的程序,如下:
先執(zhí)行后判斷式
dim s
s=0
i=0
do
i=i+1
s=s+i
loop until i>=100
msgbox(s)
先判斷后執(zhí)行式:
dim s
s=0
i=0
do while s<100
i=i+1
s=s+i
loop
msgbox(s)
這兩段程序很簡單,很容易理解,在此就不再贅述了。
至此,VBS重要的語法結(jié)構(gòu)以及語句已經(jīng)粗略學習完畢,要更加深入細致系統(tǒng)地去研究,最好找相關(guān)的書籍看一下。下面將正式進行VBS編程網(wǎng)吧實戰(zhàn)階段。
實戰(zhàn)篇
進行“實戰(zhàn)”前我們先來理解什么是Shell對象和WSH。Shell對象就是微軟對一些常用外殼操作函數(shù)的封裝。象打開或瀏覽一個文件夾、查找文件、關(guān)閉計算機等等,而且還能瀏覽整個文件系統(tǒng),獲取文件或文件夾的各種信息。由于這些封裝是建立在OLE自動化服務(wù)的基礎(chǔ)之上,所以我們可以在VB、Web和VBS中方便的使用它們。WSH是Windows Script Host的縮寫形式,WSH是Windows平臺的腳本指令,它的功能十分強大,并且它利用JS和VBS腳本語言,來實現(xiàn)其卓越的功能的,除了修改注冊表之外,它還可以訪問Excel文件,也能與網(wǎng)絡(luò)溝通,當然它最大的優(yōu)勢莫過于它能與操作系統(tǒng)溝通,而修改注冊表只是它與操作系統(tǒng)溝通的冰山一角。正是它有如此諸多的優(yōu)點與實用性,正倍受很多Windows用戶的青睞。
上面說了WSH利用VBS可以修改系統(tǒng)注冊表,但必須先創(chuàng)建一個能與操作系統(tǒng)溝通的對象,再利用該對象的各種方法對注冊表進行操作,創(chuàng)建這個對象的方法和格式如下:
Dim OperateReg
Set OperateReg=WScript.CreateObject("WScript.Shell")
上面第一行聲明了一個變量,而第二行則是利用聲明的變量創(chuàng)建一個能與操作系統(tǒng)溝通的Shell對象OperateReg。
下面就來利用Shell對象來關(guān)閉一些會給網(wǎng)吧機子帶來安全隱患的服務(wù)吧。
關(guān)閉默認共享
set ds=createobject("wscript.shell")
ds.run "net stop server /y"
關(guān)閉WMI服務(wù)
set swmi=createobject("wscript.shell")
swmi.run "net stop wmI /y"
禁用GUEST用戶
set sg=createobject("wscript.shell")
sg.run "net user guest /active:NO"
關(guān)閉telnet服務(wù)
set st=createobject("wscript.shell")
st.run "net stop telnet"
利用VBS 實現(xiàn)開機BAT延時和無黑屏
如果我們開機要執(zhí)行名為bar.bat的批處理文件在遠程服務(wù)器\\server\new\ 中那么就在客戶機的C盤根目錄下建個批處理,將他命名為run.bat,內(nèi)容如下:
ping 127.0.0.1 -n 10 (10表示你要延時的秒數(shù) 自己根據(jù)需要進行設(shè)置)
call \\server\new\bar.bat
保存后再在同目錄下建個文本寫上
set nb=createobject("wscript.shell")
nb.run "run.bat /start",0
保存成VBS文件然后將此文件加入到啟動項,重啟BAT延時和無黑屏就這樣實現(xiàn)了。
以上都是VBS的一些簡單的編程而已,如果能把VBS學到精通的話,你會發(fā)現(xiàn)它的功能非常的強大,很多復雜的功能都可以通過它來實現(xiàn)?,F(xiàn)在很多網(wǎng)管都很樂于采用VBS編程來對網(wǎng)吧的機器進行管理。本系列三篇文章僅僅是對VBS進行了簡單的了解和實例應用,大家要想更深入地去學習,還要靠平時的努力和積累,最后,祝大家早日可以把VBS學得爐火純青。
選擇結(jié)構(gòu)
選擇結(jié)構(gòu),即是對條件進行判斷,然后根據(jù)判斷的結(jié)果,選擇執(zhí)行不同的分支的結(jié)構(gòu)。常見的有IF條件語句和Select Case語句。
●IF條件語句
IF條件語句又有多種具體的形式,如If…Then、If…Then…Else、If…Then…ElseIf。下面分別用例程來說明。用筆記本編寫一個如下內(nèi)容的VBS腳本:
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
if a>b then
MsgBox("第一個數(shù)大于第二個數(shù)")
End if
運行后,要求用戶輸入兩個數(shù)字,第一個數(shù)字的值賦給a,第二個數(shù)字的值賦給b,然后程序自動判斷a和b,如果a的值大于b的值,就彈出信息提示框,顯示“第一個數(shù)大于第二個數(shù)”。注意:then后面的語句不與then在同一行時,判斷語句結(jié)束后要加一行End if來結(jié)束,否則程序會結(jié)束。如果是同一行的就不用再加上End if了,如上面的語句可改為:
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
if a>b then MsgBox("第一個數(shù)大于第二個數(shù)")
另外一個程序中可以用多個If語句,我們可以把上面的程序完善一下如下:
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
If a>b then
MsgBox("第一個數(shù)大于第二個數(shù)")
End if
If a=b then
MsgBox(“第一個數(shù)等于第二個數(shù)”)
End if
If a<b then
MsgBox(“第一個數(shù)小于第二個數(shù)”)
End if
我們也可以再換用IF的其它語句If…Then…Else和If…Then….Elseif來實現(xiàn)相同的作用,如下:
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
If a>b then
MsgBox("第一個數(shù)大于第二個數(shù)")
Else
IF a=b then
MsgBox(“第一個數(shù)等于第二個數(shù)”)
Else
MsgBox(“第一個數(shù)小于第二個數(shù)”)
End if
End if
――――――――――――――――――――――――――――――――――――――
dim a,b
a=inputbox("輸入第一個數(shù)字","輸入")
b=inputbox("輸入第二個數(shù)字","輸入")
If a>b then
MsgBox("第一個數(shù)大于第二個數(shù)")
Elseif a=b then
MsgBox(“第一個數(shù)等于第二個數(shù)”)
Else
MsgBox(“第一個數(shù)小于第二個數(shù)”)
End if
●Select Case語句
Select Case語句是多分支結(jié)構(gòu)的另一種表示形式,它具有表示直觀的特點,結(jié)構(gòu)簡單,不容易導致混亂,它的語法形式如下:
Select Case 變量或表達式
Case 表達式1
語句1
Case 表達式2
語句2
End Select
現(xiàn)在我們用Select Case語句來寫一個數(shù)字轉(zhuǎn)換成英文的程序,體驗一下Select Case的優(yōu)點,Let's go?。?!
dim a
a=inputbox("輸入一個數(shù)字","輸入")
Select Case a
Case 1
MsgBox("你輸入的數(shù)英文是One")
Case 2
MsgBox("你輸入的數(shù)英文是Two")
Case 3
MsgBox("你輸入的數(shù)英文是Tree")
Case 4
MsgBox("你輸入的數(shù)英文是Four")
End Select
從上面,是不是覺得Select Case語句很直觀呢,如果用If語句的話,肯定會很混亂,甚至會把人都給看暈了。還要注意的是無論是條件語句有多少個分支,只要一個分支執(zhí)行了,其余的分支就不再執(zhí)行。
循環(huán)結(jié)構(gòu)
●For循環(huán)語句
For語句是用來控制循環(huán)次數(shù)已知的循環(huán)結(jié)構(gòu)的,語句如下:
For 循環(huán)變量=初值 To 終值 [步長]
語句
[Exit for] '退出循環(huán)語句
Next
現(xiàn)在我們編寫一個計算從1加到100的整數(shù)和的程序,深入去了解For的用法,程序內(nèi)容如下:
dim s
s=0
for i=1 to 100
s=s+i
next
msgbox(s)
這段程序也是經(jīng)典的程序之一,它首先聲明了一個變量S,然后給S賦個初始值0,for i=1 to 100語句讓i隨著每一次循環(huán)加1,循環(huán)體內(nèi)的語句s=s+i也隨著i的增加進行累加,一直加到i=100時結(jié)束循環(huán)。Next語句讓循環(huán)體進入下一次循環(huán)。
●Do…loop循環(huán)語句
For循環(huán)語句用于控制循環(huán)次數(shù)已知的循環(huán),而Do…loop則是用于控制次數(shù)未知的循環(huán),根據(jù)設(shè)定的條件控制循環(huán)。它有兩種形式,一種是先判斷后執(zhí)行,另一形式是先執(zhí)行后判斷。
先判斷后執(zhí)行語法形式:
Do [while/until 條件]
語句
[Exit Do] ‘退出循環(huán)
Loop
先執(zhí)行后判斷語法形式:
Do
語句
[Exit Do]
Loop [while/until 條件]
下面我們用Do…Loop語句來改寫上面的計算1到100的整數(shù)和的程序,如下:
先執(zhí)行后判斷式
dim s
s=0
i=0
do
i=i+1
s=s+i
loop until i>=100
msgbox(s)
先判斷后執(zhí)行式:
dim s
s=0
i=0
do while s<100
i=i+1
s=s+i
loop
msgbox(s)
這兩段程序很簡單,很容易理解,在此就不再贅述了。
至此,VBS重要的語法結(jié)構(gòu)以及語句已經(jīng)粗略學習完畢,要更加深入細致系統(tǒng)地去研究,最好找相關(guān)的書籍看一下。下面將正式進行VBS編程網(wǎng)吧實戰(zhàn)階段。
實戰(zhàn)篇
進行“實戰(zhàn)”前我們先來理解什么是Shell對象和WSH。Shell對象就是微軟對一些常用外殼操作函數(shù)的封裝。象打開或瀏覽一個文件夾、查找文件、關(guān)閉計算機等等,而且還能瀏覽整個文件系統(tǒng),獲取文件或文件夾的各種信息。由于這些封裝是建立在OLE自動化服務(wù)的基礎(chǔ)之上,所以我們可以在VB、Web和VBS中方便的使用它們。WSH是Windows Script Host的縮寫形式,WSH是Windows平臺的腳本指令,它的功能十分強大,并且它利用JS和VBS腳本語言,來實現(xiàn)其卓越的功能的,除了修改注冊表之外,它還可以訪問Excel文件,也能與網(wǎng)絡(luò)溝通,當然它最大的優(yōu)勢莫過于它能與操作系統(tǒng)溝通,而修改注冊表只是它與操作系統(tǒng)溝通的冰山一角。正是它有如此諸多的優(yōu)點與實用性,正倍受很多Windows用戶的青睞。
上面說了WSH利用VBS可以修改系統(tǒng)注冊表,但必須先創(chuàng)建一個能與操作系統(tǒng)溝通的對象,再利用該對象的各種方法對注冊表進行操作,創(chuàng)建這個對象的方法和格式如下:
Dim OperateReg
Set OperateReg=WScript.CreateObject("WScript.Shell")
上面第一行聲明了一個變量,而第二行則是利用聲明的變量創(chuàng)建一個能與操作系統(tǒng)溝通的Shell對象OperateReg。
下面就來利用Shell對象來關(guān)閉一些會給網(wǎng)吧機子帶來安全隱患的服務(wù)吧。
關(guān)閉默認共享
set ds=createobject("wscript.shell")
ds.run "net stop server /y"
關(guān)閉WMI服務(wù)
set swmi=createobject("wscript.shell")
swmi.run "net stop wmI /y"
禁用GUEST用戶
set sg=createobject("wscript.shell")
sg.run "net user guest /active:NO"
關(guān)閉telnet服務(wù)
set st=createobject("wscript.shell")
st.run "net stop telnet"
利用VBS 實現(xiàn)開機BAT延時和無黑屏
如果我們開機要執(zhí)行名為bar.bat的批處理文件在遠程服務(wù)器\\server\new\ 中那么就在客戶機的C盤根目錄下建個批處理,將他命名為run.bat,內(nèi)容如下:
ping 127.0.0.1 -n 10 (10表示你要延時的秒數(shù) 自己根據(jù)需要進行設(shè)置)
call \\server\new\bar.bat
保存后再在同目錄下建個文本寫上
set nb=createobject("wscript.shell")
nb.run "run.bat /start",0
保存成VBS文件然后將此文件加入到啟動項,重啟BAT延時和無黑屏就這樣實現(xiàn)了。
以上都是VBS的一些簡單的編程而已,如果能把VBS學到精通的話,你會發(fā)現(xiàn)它的功能非常的強大,很多復雜的功能都可以通過它來實現(xiàn)?,F(xiàn)在很多網(wǎng)管都很樂于采用VBS編程來對網(wǎng)吧的機器進行管理。本系列三篇文章僅僅是對VBS進行了簡單的了解和實例應用,大家要想更深入地去學習,還要靠平時的努力和積累,最后,祝大家早日可以把VBS學得爐火純青。
相關(guān)文章
window通過vbs+bat實現(xiàn)自動在后臺運行nodejs application
這篇文章主要介紹了window通過vbs+bat實現(xiàn)自動在后臺運行nodejs application,需要的朋友可以參考下2016-11-11VBS下載者(通過vbscript實現(xiàn)文件下載)
這篇文章主要介紹了通過vbscript實現(xiàn)文件下載功能的實現(xiàn)代碼,主要是使用了ADODB.Stream,需要的朋友可以參考下2014-06-06