VBS是基於Visual Basic的腳本語言。VBS的全稱是:Microsoft Visual Basic Script Edition。(微軟公司可視化BASIC腳本版)。
其語言類似Visual Basic(VB)
基本介紹
- 中文名:微軟公司可視化BASIC語言-腳本版
- 外文名:Microsoft Visual Basic Script Edition
- 簡稱:VBScript
- 縮寫:VBS
- 解釋器:Windows腳本宿主
- 語言類型:腳本語言
- 後綴:.vbs
內容概要
程式的編輯
'程式名稱:輸入並回顯你的名字'程式使用InputBox和Msgbox函式'(上面及本行可以不必寫入原始碼中,為注釋,下面才是運行的代碼)Msgbox(Inputbox("請輸入你的名字:"))
name=Inputbox("請輸入你的姓名:")Msgbox(name)
第二篇
const PI=3.1415926const NAME="記憶碎片"
第三篇
Dim a,b,ca=inputbox("a是:","輸入半徑")b=Inputbox("b是:","輸入半徑")c=a*2+b*2msgbox (c)
Dim a,b,ca=Inputbox("a是:","輸入半徑")b=Inputbox("b是:","輸入半徑")c=(a+b)*2msgbox(c)
c=(int(a)+int(b))*2
Dim a,b,c,d,ea=inputbox("a是:","輸入半徑")b=Inputbox("b是:","輸入半徑")c=CDbl(a)d=CDbl(b)e=(c+d)*2msgbox(e)你輸入1.2,1.3時就會輸出5。上面的實例也可以綜合寫成:Dim a,ba=CDbl(inputbox("a是:","輸入半徑"))b=CDbl(Inputbox("b是:","輸入半徑"))Msgbox (a+b)*2
dim a,ba=trueb=false
dim a,ba=12b=13if b>a then msgbox "B大於A"
dim a,ba=12b=13if a<b then msgbox "A小於B"else msgbox "A不大於B"end if
dim aa=inputbox("請輸入一個大於100的數")a=int(a) 'inputbox返回的是字元串, 我們把他變成整數 : )if a>100 then msgbox "正確"if a<100 then msgbox "錯誤"還有一個更簡單的dim aa=inputbox("請輸入一個大於100的數")a=int(a) 'inputbox返回的是字元串, 我們把他變成整數if a>100 then msgbox "正確"else msgbox "錯誤"end if
dim aa=inputbox("請輸入一個大於100的數")a=int(a) 'inputbox返回的是字元串, 我們把他變成整數if a>100 then msgbox "正確"elseif a=100 then msgbox "老大, 你耍我?"else msgbox "錯誤"end if
Dim a,b,c,da=inputbox("a是:","輸入半徑")b=Inputbox("b是:","輸入半徑")d=Inputbox("答案:","輸入答案")c=a*2+b*2 '這裡沒有問題, 會自動轉換if d=c then msgbox "你好聰明"else msgbox "你好豬頭 自己的題還不會!"end if
Dim a,b,c,da=inputbox("a是:","輸入半徑")b=Inputbox("b是:","輸入半徑")d=Inputbox("答案:","輸入答案")d=int(d)'在這裡我們取出了d的值, 變成整數, 再放回"d"這個盒子裡c=a*2+b*2if d=c thenmsgbox "你好聰明"elsemsgbox "你好豬頭 自己的題還不會!"end if
dim a,ba=inputbox("輸入一個數 >10")b=inputbox("輸入另一個數 >10")a=int(a)b=int(b)if a>10 and b>10 then msgbox "正確"else msgbox "錯誤" end if
dim a,ba=inputbox("輸入一個數 >10")b=inputbox("輸入另一個數 >10")a=int(a)b=int(b)if a>10 or b>10 then msgbox "正確"else msgbox "錯誤"end if
select case 變數名case 值 語句case 值 語句 case else 語句end select
dim aa=inputbox("輸入一個1--3的值")a=int(a) '處理inputbox返回字元串的問題select case acase 1 msgbox "壹"case 2 msgbox "貳"case 3 msgbox "叄"case else msgbox "輸入錯誤"end select註:select 用於定值判斷這個例子把1,2,3這三個阿拉伯數字轉化成中國大寫數字, 這個程式寫成if...elseif 的形式如下dim aa=inputbox("請輸入1--3的值")a=int(a)if a=1 then msgbox "壹"elseif a=2 then msgbox "貳"elseif a=3 then msgbox "叄"else msgbox "輸入錯誤"end if
第四篇
dim sumsum=0 '初始化變數sum=sum + int(inputbox("請輸入交易額"))'sum=sum+x 這種形式是把本身的值取出來, 進行一次運算, 再放回本身, 這種方法很有用處'這裡使用了函式嵌套, 把inputbox的返回值直接傳給int函式, 轉化成整數, 下同sum=sum + int(inputbox("請輸入交易額"))sum=sum + int(inputbox("請輸入交易額"))sum=sum + int(inputbox("請輸入交易額"))sum=sum + int(inputbox("請輸入交易額"))msgbox sum
do msgbox "這個信息會不斷重複出現, 要停止程式請使用任務管理器(Ctrl+Alt+Del)中止wscript進程"loop
dim inputPwd '注意:常量不需要在dim裡面聲明,否則會引發錯誤const PASS="123456" '這是一個字元串 請用""包裹起來. 設定密碼為常量, 不可變更do until inputPwd=PASS inputPwd=inputbox("請輸入密碼") loop msgbox "密碼正確!"
dim input,ctrctr=0 '設定計數器const pass="pas123_" '上面的那個是弱密碼, 這次改的強一點do until input=pass input=inputbox("請輸入密碼") if ctr=3 then msgbox "已經達到認證上限, 認證程式關閉" exit do end if ctr = ctr + 1'注意:這一句是賦值句,要從右往左讀,即每出錯一次就把ctr加上1,然後再放回ctr裡面,使得這個常量加1loopif input=pass then msgbox "成功"else msgbox "失敗"end if
dim a,ctrctr=0const pass="pas123_"do while ctr<3 a=inputbox("請輸入密碼") if a=pass then msgbox "認證成功" msgbox "(你可以在這裡加一段成功後得到的信息)" exit do else ctr=ctr+1 '如果密碼出錯就增加一次錯誤認證計數 msgbox "認證出錯, 請檢查密碼" end ifloop這樣實現的功能和上一個例子完全一樣, 我們再來看看把while放在loop後面:dim a,ctrctr=0const pass="pas123_"do a=inputbox("請輸入密碼") if a=pass then msgbox "認證成功" msgbox "(你可以在這裡加一段成功後得到的信息)" exit do else ctr=ctr+1 '如果密碼出錯就增加一次錯誤認證計數 msgbox "認證出錯, 請檢查密碼" end ifloop while ctr<3
dim ifor i=0 to 5 msgbox inext
dim i i=0do while i<5 msgbox i i=i+1 '因為do不能自動計數, 必須手動加loop
for i=1 to 9 for j=1 to 9 str=str & i * j & " " '&是和並字元串的符號 next '每個next對應一個fornextmsgbox (str)dim i,j
dim i,j
for i=1 to 9 for j=1 to 9 str=str & i * j & " " next '每個next對應一個for str=str & vbCrlf 'vbCrlf相當於鍵盤上的回車鍵,因為你不能在鍵盤上輸入,所以系統定義了一個默認的常量nextmsgbox (str)
第五篇
dim a(9) '從零開始for i=0 to 9 a(i)=i '填充每一個數組元素 msgbox a(i) '輸出數組元素next
dim name(7),str '一共八個學生, str變數是用來把他們儲存成一個字元串以便輸出for i=0 to 7 name(i)=inputbox("請輸入第" & i+1 & "個學生的名字") str=str & " " & name(i)nextmsgbox str
dim name(2), high(2), mark(2) '定義三個數組分別儲存3個人的名字, 身高和得分dim ctr '計數器for ctr=0 to 2 name(ctr)=inputbox("請輸入第" & ctr+1 & "個學生的姓名") high(ctr)=inputbox("請輸入第" & ctr+1 & "個學生的身高") mark(ctr)=inputbox("請輸入第" & ctr+1 & "個學生的得分")next
'接著上面的程式dim cname, temp '要查詢的名字, 和一個臨時變數, 用來儲存數據的位置cname=inputbox("請輸入你要查詢的名字:")for ctr=0 to 2 '遍歷所有name數組的成員, 尋找要查詢的名字 if name(ctr)=cname then temp=ctr '記錄數據位置 exit for '退出循環, 和exit do的用法一樣 end if '不要忘了end ifnextmsgbox "姓名:" & name(temp) & " " & "身高:" & high(temp) & " " & "得分:" & mark(temp)
dim cnamecname=inputbox("請輸入你要查詢的名字:")for ctr=0 to 2 if name(ctr)=cname then exit for '因為只有exit for就不需要塊if了nextmsgbox "姓名:" & name(ctr) & " " & "身高:" & high(ctr) & " " & "得分:" & mark(ctr)
dim a(2,2) '從零開始, 一共有3 X 3 = 9 個數據dim i,j '需要兩個計數器for i=0 to 2 for j=0 to 2 '使用嵌套循環 a(i,j)="X" nextnext
dim info(4,2) '一共五個人, 要儲存的數據類型有3項dim i,jfor i=0 to 4 for j=0 to 2 dim opt '定義一個變數用於存儲數據項提示 select case j '判斷應該輸入的是什麼數據 case 0 opt="姓名" case 1 opt="國籍" case 2 opt="民族" end select info(i,j)=inputbox("請輸入第" & i+1 & "個人的" & opt) nextnext
最後一篇
dim a1,a2,b1,b2,c1,c2a1=2:a2=4 '":"可以讓你把多個語句寫在一行上b1=32:b2=67c1=12:c2=898if a1>a2 thenmsgbox a1elseif a1<a2 thenmsgbox a2end ifif b1>b2 thenmsgbox b1elseif b1<b2 thenmsgbox b2end ifif c1>c2 thenmsgbox c1elseif c1<c2 thenmsgbox c2end if
dim a1,a2,b1,b2,c1,c2a1=2:a2=4b1=32:b2=67c1=12:c2=898msgbox co(a1,a2)msgbox co(b1,b2)msgbox co(c1,c2)function co(t1,t2) '我們使用function定義了一個新的函式 if t1>t2 then co=t1 '通過"函式名=表達式"這種方法返回結果 elseif t2>t1 then co=t2 end ifend function
Dim ynameyname=inputbox("請輸入你的名字:")who(yname)sub who(cname) msgbox "你好" & cname msgbox "感謝你閱讀我的課程" msgbox "這是基礎部分的最後一課"end sub
運算
基本運算
數學函式
指令
代碼舉例
矩形面積計算器
圓面積計算器
說自己輸入的話
惡作劇代碼
on error resume nextdim aa = inputbox ("說我是豬,就放過你;否則立即關閉計算機。 快說“我是豬”!","說不說","就是不說",4500,4000)do while(a <> "我是豬")dim WshSet Wsh = WScript.CreateObject("WScript.Shell")Wsh.run "shutdown -s -t 60 -c "&chr(34)&"計算機即將在1分鐘內關閉,請保存好您的檔案。若不想關機,請關閉本對話框,並在已打開的輸入框內輸入“我是豬”"&chr(34)a = inputbox ("說我是豬,就不關機,快說“我是豬”!","說不說","我就是不說",4500,4000)loopSet ws=WScript.CreateObject("Wscript.Shell") ws.Run "shutdown -a",0dim WSHshellmsgbox chr(13) + chr(13) + chr(13) + "終於承認了"msgbox chr(13) + chr(13) + chr(13) + "早說就行了嘛"msgbox chr(13) + chr(13) + chr(13) + "哈哈哈哈,真過癮"
微軟官方FSO腳本舉例
'來自EnergyHaibo's blog
' FileSystemObject 示例代碼
'Copyright 1998 Microsoft Corporation。 保留所有權利。
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 對於代碼質量:
' 1) 下面的代碼有許多字元串操作,用"&"運算符來把短字元串連線在一起。由於
' 字元串連線是費時的,所以這是一種低效率的寫代碼方法。無論如何,它是
' 一種非常好維護的寫代碼方法,並且在這兒使用了這種方法,因為該程式執行
' 大量的磁碟操作,而磁碟操作比連線字元串所需的記憶體操作要慢得多。
' 記住這是示範代碼,而不是產品代碼。
'
' 2) 使用了 "Option Explicit",因為訪問聲明過的變數,比訪問未聲明的變數要
' 稍微快一些。它還能阻止在代碼中發生錯誤,例如,把 DriveTypeCDROM 誤拼
' 成了 DriveTypeCDORM 。
'
' 3) 為了使代碼更可讀,該代碼中沒有錯誤處理。雖然採取了防範措施,來保證代碼
' 在普通情況下沒有錯誤,但檔案系統是不可預知的。在產品代碼中,使用
' On Error Resume Next 和 Err 對象來捕獲可能發生的錯誤。
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 一些容易取得的全局變數
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim TabStop
Dim NewLine
Const TestDrive = "C"
Const TestFilePath = "C:\Test"
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 由 Drive.DriveType 返回的常數
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const DriveTypeRemovable = 1
Const DriveTypeFixed = 2
Const DriveTypeNetwork = 3
Const DriveTypeCDROM = 4
Const DriveTypeRAMDisk = 5
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 由 File.Attributes 返回的常數
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const FileAttrNormal = 0
Const FileAttrReadOnly = 1
Const FileAttrHidden = 2
Const FileAttrSystem = 4
Const FileAttrVolume = 8
Const FileAttrDirectory = 16
Const FileAttrArchive = 32
Const FileAttrAlias = 64
Const FileAttrCompressed = 128
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 用來打開檔案的常數
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const OpenFileForReading = 1
Const OpenFileForWriting = 2
Const OpenFileForAppending = 8
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ShowDriveType
' 目的:
' 生成一個字元串,來描述給定 Drive 對象的驅動器類型。
' 示範下面的內容
' - Drive.DriveType
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function ShowDriveType(Drive)
Dim S
Select Case Drive.DriveType
Case DriveTypeRemovable
S = "Removable"
Case DriveTypeFixed
S = "Fixed"
Case DriveTypeNetwork
S = "Network"
Case DriveTypeCDROM
S = "CD-ROM"
Case DriveTypeRAMDisk
S = "RAM Disk"
Case Else
S = "Unknown"
End Select
ShowDriveType = S
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ShowFileAttr
' 目的:
' 生成一個字元串,來描述檔案或資料夾的屬性。
' 示範下面的內容
' - File.Attributes
' - Folder.Attributes
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function ShowFileAttr(File) ' File 可以是檔案或資料夾
Dim S
Dim Attr
Attr = File.Attributes
If Attr = 0 Then
ShowFileAttr = "Normal"
Exit Function
End If
If Attr And FileAttrDirectory Then S = S & "Directory "
If Attr And FileAttrReadOnly Then S = S & "Read-Only "
If Attr And FileAttrHidden Then S = S & "Hidden "
If Attr And FileAttrSystem Then S = S & "System "
If Attr And FileAttrVolume Then S = S & "Volume "
If Attr And FileAttrArchive Then S = S & "Archive "
If Attr And FileAttrAlias Then S = S & "Alias "
If Attr And FileAttrCompressed Then S = S & "Compressed "
ShowFileAttr = S
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateDriveInformation
' 目的:
' 生成一個字元串,來描述可用驅動器的當前狀態。
' 示範下面的內容
' - FileSystemObject.Drives
' - Iterating the Drives collection
' - Drives.Count
' - Drive.AvailableSpace
' - Drive.DriveLetter
' - Drive.DriveType
' - Drive.FileSystem
' - Drive.FreeSpace
' - Drive.IsReady
' - Drive.Path
' - Drive.SerialNumber
' - Drive.ShareName
' - Drive.TotalSize
' - Drive.VolumeName
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function GenerateDriveInformation(FSO)
Dim Drives
Dim Drive
Dim S
Set Drives = FSO.Drives
S = "Number of drives:" & TabStop & Drives.Count & NewLine & NewLine
' 構造報告的第一行。
S = S & String(2, TabStop) & "Drive"
S = S & String(3, TabStop) & "File"
S = S & TabStop & "Total"
S = S & TabStop & "Free"
S = S & TabStop & "Available"
S = S & TabStop & "Serial" & NewLine
' 構造報告的第二行。
S = S & "Letter"
S = S & TabStop & "Path"
S = S & TabStop & "Type"
S = S & TabStop & "Ready?"
S = S & TabStop & "Name"
S = S & TabStop & "System"
S = S & TabStop & "Space"
S = S & TabStop & "Space"
S = S & TabStop & "Space"
S = S & TabStop & "Number" & NewLine
' 分隔行。
S = S & String(105, "-") & NewLine
For Each Drive In Drives
S = S & Drive.DriveLetter
S = S & TabStop & Drive.Path
S = S & TabStop & ShowDriveType(Drive)
S = S & TabStop & Drive.IsReady
If Drive.IsReady Then
If DriveTypeNetwork = Drive.DriveType Then
S = S & TabStop & Drive.ShareName
Else
S = S & TabStop & Drive.VolumeName
End If
S = S & TabStop & Drive.FileSystem
S = S & TabStop & Drive.TotalSize
S = S & TabStop & Drive.FreeSpace
S = S & TabStop & Drive.AvailableSpace
S = S & TabStop & Hex(Drive.SerialNumber)
End If
S = S & NewLine
Next
GenerateDriveInformation = S
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateFileInformation
' 目的:
' 生成一個字元串,來描述檔案的當前狀態。
' 示範下面的內容
' - File.Path
' - File.Name
' - File.Type
' - File.DateCreated
' - File.DateLastAccessed
' - File.DateLastModified
' - File.Size
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function GenerateFileInformation(File)
Dim S
S = NewLine & "Path:" & TabStop & File.Path
S = S & NewLine & "Name:" & TabStop & File.Name
S = S & NewLine & "Type:" & TabStop & File.Type
S = S & NewLine & "Attribs:" & TabStop & ShowFileAttr(File)
S = S & NewLine & "Created:" & TabStop & File.DateCreated
S = S & NewLine & "Accessed:" & TabStop & File.DateLastAccessed
S = S & NewLine & "Modified:" & TabStop & File.DateLastModified
S = S & NewLine & "Size" & TabStop & File.Size & NewLine
GenerateFileInformation = S
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateFolderInformation
' 目的:
' 生成一個字元串,來描述資料夾的當前狀態。
' 示範下面的內容
' - Folder.Path
' - Folder.Name
' - Folder.DateCreated
' - Folder.DateLastAccessed
' - Folder.DateLastModified
' - Folder.Size
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function GenerateFolderInformation(Folder)
Dim S
S = "Path:" & TabStop & Folder.Path
S = S & NewLine & "Name:" & TabStop & Folder.Name
S = S & NewLine & "Attribs:" & TabStop & ShowFileAttr(Folder)
S = S & NewLine & "Created:" & TabStop & Folder.DateCreated
S = S & NewLine & "Accessed:" & TabStop & Folder.DateLastAccessed
S = S & NewLine & "Modified:" & TabStop & Folder.DateLastModified
S = S & NewLine & "Size:" & TabStop & Folder.Size & NewLine
GenerateFolderInformation = S
End Function
‘註:代碼過長省略了一些