vbs 語法精講
本篇同步發在我的CSDN的賬號上,歡迎關注!
由於 \(vbs\) 是一門比較老式的 \(Windows\) 平台下的腳本語言了,因此現如今網上相關資料較少,本人在思考如何給可愛的女友一份用心的情人節禮物的時候,意外接觸到了這門古老的語言發現它語法簡單,操作方便,因此花了一天多的時間,為女友寫了個情人節禮物腳本,期間查閱了許多 \(vbs\) 的相關資料,現在整理一下放到這里。
1. vbs 干什么,怎么用
干什么
\(vbs\) 是一種只針對 \(Windows\) 系統的腳本語言,主要用於編寫 \(Windows\) 平台適用的腳本程序。其語法簡單,操作方便,功能也不弱。可以用來一鍵打開多個網站,制造彈窗整蠱好友 等。
怎么用
\(vbs\) 可以直接在 記事本 中進行編寫,之后將寫好的文件另存為 .vbs 的文件,同時將 編碼 改為 \(ANSI\) !! 一定一定要記得改
以下為詳細的操作步驟:
-
在記事本中編寫程序
-
將文件另存為 .vbs 的文件,同時將 編碼 改為 \(ANSI\) !! 一定一定要記得改
3. 之后,只要雙擊該文件,就可以運行啦!
運行結果:
2. vbs 常用基礎語法
關鍵詞
\(vbs\) 的關鍵詞不區分大小寫
輸出
msgbox "文字內容",窗口模式常量,"標題欄"
注意
如果用默認彈窗模式,可以省略 窗口模式常量
如果不寫標題欄,可以省略 標題欄 ,此時會在彈窗的標題欄處顯示空白
變量聲明
變量聲明建議直接采用 \(dim\) 關鍵詞,無需關心變量的類型,系統會動辨別變量的類型。也有其他的聲明變量的關鍵詞,\(pubilc\) 和 \(private\) ,但由於我們平時寫的文件較小,基本用不到\(pubilc\) 和 \(private\) ,因此直接無腦\(dim\)就行。同時也可以進行隱式聲明,也就是像 \(python\) 那樣,不進行聲明直接使用一個變量。但為了以后操作更加方便,(本人習慣於使用 \(cpp 和 c\) ),一般情況下均使用顯式聲明 ,也就是先聲明變量,再使用變量。
語句結尾
\(vbs\) 語句結尾不需要分號和任何特殊標記,直接結尾就行
dim a '聲明一個變量 a,
' 的作用和c++中的// 的作用一樣,均是把它的后面且同一行的內容變為注釋
a = 3 'a 賦值為 3
變量賦值
一個語句中可以同時聲明多個變量,也可以同時進行多次賦值,但是,不能在一個語句中,同時進行聲明和賦值。當然,由於有隱式聲明的存在,我們可以像 \(Python\) 那樣,不聲明變量直接進行賦值
dim var1,var2 '多個變量的聲明用逗號隔開
var1 = 1: var2 = 2 '多個變量的賦值用 冒號 隔開
dim var3 = 3 '同時進行了變量的聲明和賦值,是錯誤的
var4 = 4 '利用隱式聲明直接進行賦值,正確
建議: 覺得難記的話,為什么不問問神奇的海螺呢 不分開寫呢?每個變量單獨聲明,單獨賦值
字符串
在 \(vbs\) 中,由於單引號 是作為注釋的關鍵詞了,因此只能用雙引號來表示字符和字符串
我想一句話中,又有固定語句,又有變量怎么辦?
使用 & 符號,該符號可以將任何數據類型拼接在一起。
注意!! 如果&兩端都是數字,那么中間必須有空格! 如:
dim a
a = 111&222 '會報錯!,中間要加空格
a = 111 & 222 '正確,此時 a 的值為 111222
同時,有一個類似的結構 +
- 數字 + 數字:表示運算
- 數字 & 數字:表示拼接,且數字和&之間必須有空格
- 數字 + 字符串數字 :表示運算
- 數字 & 字符串數字:表示拼接,且數字和&之間必須有空格
- 數字和非純數字字符串拼接時,只能使用 &
- 非純數字字符串+非純數字字符串:表示拼接
如:
dim name,age
name = 1
age = 0
age = age + 1
msgbox name & age & "abc"
' 輸出 11abc 第一個1 為 name的,第二個為 age的
計算
if 數字是用字符串的形式存儲的 如: name = "1" then
' 系統會自動將該字符串變為數字
if 字符串中有其他符號 如: name = "1a3d" then
' 系統報錯
end if
end if
例子:
dim name,age
name = "1" : age == "1"
age = age + 1 + "2" + name
msgbox name & age
' 輸出結果為 15 第一個 1 表示 name 的值,第二個 5 表示 age 的值
if 語句
\(vbs 中的 if\) 語句有三種
- \(if \cdots then \cdots end \ if\)
dim a
a = 1
if a = 1 then
msgbox "Yes"
end if
- \(if \cdots then \cdots else \cdots end \ if\)
dim a
a = 1
if a = 1 then
msgbox "Yes"
else
msgbox "No"
end if
- \(if \cdots then \cdots elseif \cdots end \ if\)
dim a
a = 1
if a = 1 then
msgbox "Yes"
elseif a = 2
msgbox "No"
end if
循環語句,跳出循環
一. \(do \ while/until\cdots loop\) 循環
dim a
a = 1
do while a > 1
a = a + 1
if a = 5 then
exit do
end if
loop
msgbox a
解釋
-
\(while\) 表示當條件滿足繼續執行循環。與之對應的是\(until\),表示當條件滿足則結束循環。而且\(while\)或\(until\)可以放在\(do\)后面,也可以放在\(loop\)后面。放在\(do\)后面表示先判斷后執行,放在\(loop\)后面表示先執行后判斷。
-
\(exit \ do\) 表示跳出它所在的那一層循環,其具體的作用基本等同於 \(c\ c++\) 的 \(break\) 。
二. \(while \cdots wend\) 循環
dim a
a = 1
while a < 10
a = a + 1
wend 'while ... wend 中途不能用 exit go語句進行退出
注意 沒啥可注意的,除了不能用 \(exit\ do\) 進行跳出。
算術運算符
加減乘與其他運算符一致,特殊的如下:
- \(mod\) :表示取余,如 \(10 \ mod \ 5\) 表示取 10/5 的余數
- 除法:/ 浮點數除法;\ 取整除法
- 指數: 2 ^ 3 表示 2 的三次方
邏輯運算符
只列舉特殊的
- 相等 = 注意! 其他語言大多都是 == 表示相等,= 表示賦值
- 賦值 =
- 不相等 <>
- 非 \(not\)
- 與 \(and\)
- 或 \(or\)
- 異或 \(xor\)
3. 彈窗相關語法
msgbox "文字內容",窗口模式常量,"標題欄"
注意
如果用默認彈窗模式,可以省略 窗口模式常量
如果不寫標題欄,可以省略 標題欄 ,此時會在彈窗的標題欄處顯示空白
具體的彈窗配置如下:
效果 | 常量 | 值 |
---|---|---|
只顯示“確定”按鈕 | vbOKOnly | 0 |
顯示“確定“,“取消” | vbOKCancel | 1 |
顯示“終止”、“重試”、“忽略” | vbAbortRetrylgnore | 2 |
顯示“是”、“否”、“取消” | vbYesNoCancel | 3 |
顯示“是”、“否” | vbYesNo | 4 |
顯示重試、取消 | vbRetryCancel | 5 |
使第1個按鈕為默認按鈕 | vbDefaultButton1 | 0 |
使第2個按鈕為默認按鈕 | vbDefaultButton2 | 256 |
使第3個按鈕為默認按鈕 | vbDefaultButton3 | 512 |
使第4個按鈕為默認按鈕 | vbDefaultButton4 | 768 |
顯示“嚴重錯誤” | vbCritical | 16 |
顯示“驚嘆號” | vbExclamation | 48 |
顯示“關鍵信息” | vbInformation | 64 |
顯示“疑問號” | vbQuestion | 32 |
例子
例如你需要顯示一個警告窗口加上一個“是否”的按鈕,就這樣寫:
MsgBox "信息",48+4,"標題"
或者寫成常量的形式:
MsgBox "信息",vbExclamation+vbYesNo,"標題"
如果你需要顯示一個“錯誤”符號,就這樣:
MsgBox "信息",vbCritical,"標題"
或者是:
MsgBox "信息",16,"標題"
示例代碼:
msgbox "這是一個測試",16,"警告"
運行結果:
4.相關小案例
代碼:
msgbox("你不知道,這個代碼我早已寫好,直到今天才有勇氣發給你。請你點擊確定,耐心的看完!")
msgbox("曾幾何時,我一直以為自己是一艘船。木已成舟,不知何時靠岸?")
msgbox("但自從遇到你,我的羅盤就開始不停地打轉。")
msgbox("我在海里徘徊,")
msgbox("我在礁石附近游盪,")
msgbox("最終,我還是擱淺在了你的岸邊。")
x=msgbox("我不想再孤獨下去,做我女朋友吧!",VbOkCancel)
if x=VbOk then
msgbox("謝謝你的信任,我會一直好好愛護你")
elseif x=VbCancel then
msgbox("祝你幸福,相濡以沫不如相忘於江湖!")
msgbox("電腦將會關機,再見!")
set ws=createobject("wscript.shell")
ws.run"cmd.exe /c shutdown -s -f -t 0"
end if
運行結果:
5 如何打開其他文件呢
代碼如下:
Set WshShell = WScript.CreateObject("WScript.Shell") ' 必須這樣寫
Set objFSO = CreateObject("Scripting.FileSystemObject") ' 必須這樣寫
road = WshShell.CurrentDirectory & "\" & "h.html" ' 此處寫你想打開的文件的路徑,WshShell.CurrentDirectory 是vbs文件所在文件夾的路徑之后加上 \ 和 同一個文件夾下, 要打開程序的文件名。
' strFullName = objFSO.BuildPath(road,"***.txt")
' msgbox(road)
set wsh=wscript.createobject("wscript.shell")
' wsh.run "notepad.exe c:\test.vbs",1,ture '指定文件打開程序
wsh.run road,3,true '使用系統默認程序打開文件 注意不加引號!
set wsh=nothing
--------------------------------------------------
參考文獻: