VBScript

VBScript是Visual Basic Script的簡稱，有時也被縮寫為VBS。VBScript是微軟開發的一種指令碼語言，可以看作是VB語言的簡化版，與Visual Basic for Applications的關係也非常密切。它具有原語言容易學習的特性。目前這種語言廣泛應用於網頁和ASP程式製作，同時還可以直接作為一個可執行程式。用於除錯簡單的VB語句非常方便。使用範圍.由於VBScript可以透過Windows指令碼宿主呼叫COM，因而可以使用Windows作業系統中可以被使用的程式庫，比如它可以使用Microsoft Office的庫，尤其是使用Microsoft Access和Microsoft SQL Server的程式庫，當然它也可以使用其它程式和作業系統本身的庫。在實踐中VBScript一般被用在以下三個方面：Windows作業系統.VBScript可以被用來自動地完成重複性的Windows作業系統任務。在Windows作業系統中，VBScript可以在Windows Script Host的範圍內執行。Windows作業系統可以自動辨認和執行*.VBS和*.WSF兩種檔案格式，此外Internet Explorer可以執行HTA和CHM檔案格式。VBS和WSF檔案完全是文字式的，它們-{只}-能透過少數幾種對話視窗與使用者通訊。HTA和CHM檔案使用HTML格式，它們的程式碼可以像HTML一樣被編輯和檢查。在WSF、HTA和CHM檔案中VBScript和JavaScript的程式碼可以任意混合。HTA檔案實際上是加有VBS、JavaScript成分的HTML檔案。CHM檔案是一種線上幫助，使用者可以使用專門的編輯程式將HTML程式編輯為CHM。Windows 作業系統也提供一些 VBScript 指令碼來進行高階管理功能，例如管理 Windows 啟用金鑰的 slmgr.vbs。網頁瀏覽器.網頁中的VBS可以用來控制客戶端的網頁瀏覽器。VBS與JavaScript在這一方面是競爭者，它們可以用來實現動態HTML，甚至可以將整個程式結合到網頁中來。至今為止VBS在客戶方面未能佔優勢，因為它只獲得Microsoft Internet Explorer的支援，並且IE11起已不再支援VBScript。而JavaScript則受到所有網頁瀏覽器的支援。在Internet Explorer中VBS和JavaScript使用同樣的許可權，它們-{只}-能有限地使用Windows作業系統中的物件。網頁伺服器.在網頁伺服器方面VBS是微軟的Active Server Pages的一部分，它與JavaServer Pages和PHP是競爭對手。在這裡VBS的程式碼直接嵌入到HTML頁內，這樣的網頁以ASP結尾。網頁伺服器Internet資訊服務執行ASP頁內的程式部分並將其結果轉化為HTML傳遞給網頁瀏覽器供使用者使用。這樣伺服器可以進行資料庫聞訊並將其結果放到HTML網頁中。示範.Hello World.最簡單的例子：MsgBox "Hello World"以codice_1檔案儲存。再使用codice_2或codice_3執行。一個更復雜的例子中，示出了使用codice_4作為函式，並使用了三個引數，其中第二個引數使用的是常量。Dim x' These three produce the same result. However, the use of constants as in the third line' is considered best practice.x = MsgBox("Hello World:Text",1+64+4096,"Hello World:Title")x = MsgBox("Hello World:Text",4161,"Hello World:Title")x = MsgBox("Hello World:Text", vbOKCancel+vbInformation+vbSystemModal, _"Hello World:Title")' Presents the number corresponding to the button pressed. Different constants will produce' different behaviours. For example, vbOKCancel specifies two buttons in the dialogue box,' whereas vbYesNoCancel specifies three.x = MsgBox("Hello World:Text", vbYesNoCancel+vbInformation,"Hello World:Title")MsgBox "The result is " &amp; x終止任務.VBScript能訪問Windows管理規範 (WMI)，就像Windows任務管理器。以下的程式碼執行時將會終止任何關於"notepad.exe"的程序。'Terminate all processes involving the nameOption ExplicitDim strComputer, strProcessToKill, objWMIService, colProcess, objProcessstrComputer = "."strProcessToKill = "notepad.exe"Set objWMIService = GetObject("winmgmts:" _&amp; "{impersonationLevel=impersonate}!\\" _&amp; strComputer _&amp; "\root\cimv2")Set colProcess = objWMIService.ExecQuery _("Select * from Win32_Process Where Name = '" &amp; strProcessToKill &amp; "'")For Each objProcess in colProcessMsgBox "... terminating " &amp; objProcess.NameobjProcess.Terminate()Next使用"Option Explicit"並不是必須的，但它被認為是VBScript的最佳實踐。建立具有唯一的名稱的十個檔案.這個例項顯示如何建立檔案並向它新增內容。它還演示了字串連線。For i = 1 to 10createFile( i )NextPublic sub createFile(a)Dim fso,myFilefilePath = "C:\file_name" &amp; a &amp; ".txt"Set fso=CreateObject("Scripting.FileSystemObject")Set MyFile= fso.CreateTextFile( filePath)MyFile.WriteLine("This is a separate file")MyFile.closeEnd Sub傳送按鍵.SendKeys方法模擬一個或多個按鍵到活動視窗將檢查是否是真正的按鍵，而不是虛擬的。set shl = createobject("wscript.shell")shl.sendkeys "Hello World!"wscript.sleep 2000shl.sendkeys "Hello World!"wscript.sleep 2000shl.sendkeys "Hello World!"wscript.sleep 2000執行期間，“Hello World!”將顯示在命令提示符。Windows檔案操作.物件FileSystemObject執行一些檔案操作。myfilename = "C:\Wikipedia - VBScript - Example - Hello World.txt"MakeHelloWorldFile myfilenameSub MakeHelloWorldFile (FileName)'Create a new file in C: drive or overwrite existing fileSet FSO = CreateObject("Scripting.FileSystemObject")If FSO.FileExists(FileName) ThenAnswer = MsgBox ("File " &amp; FileName &amp; " exists ... OK to overwrite?", vbOKCancel)'If button selected is not OK, then quit now'vbOK is a language constantIf Answer  vbOK Then Exit SubElse'Confirm OK to createAnswer = MsgBox ("File " &amp; FileName &amp; " ... OK to create?", vbOKCancel)If Answer  vbOK Then Exit SubEnd If'Create new file (or replace an existing file)Set FileObject = FSO.CreateTextFile (FileName)FileObject.WriteLine "Time ... " &amp; Now()FileObject.WriteLine "Hello World"FileObject.Close()MsgBox "File " &amp; FileName &amp; " ... updated."End Subcodice_5將會在按下按鈕後於C:\ 驅動器根目錄建立一個小文字檔案。Excel物件操作.Option Explicit '所有變數必須顯式宣告Dim app,workbook,sheetDim row,colSet app = WScript.CreateObject("Excel.Application")app.Visible = TrueSet workbook = app.WorkBooks.AddSet sheet = workbook.Worksheets(1)'10x10 random valueFor row = 1 To 10For col = 1 To 10sheet.Cells(row,col).Value = CInt(Int((100 * Rnd()) + 1))NextNextSet sheet = workbook.Worksheets(2)'10x10 random valuesheet.Range("A1:J10").Formula = "=Int(Rand() * 100 + 1)"語言.VBScript主要的優點有：缺點有：和VB的對比.不能為變數定義型別.在VB中，為變數定義型別使用“Dim 變數名 As 型別”的語句格式。但是在VBScript中這樣寫是錯誤的，VBScript中的變數都是弱型別，因此它不需要指定型別。-{只}-能使用“Dim 變數名”的格式，直譯器會自動根據賦值的型別定義變數型別。不能使用條件編譯.在VB中，可以使用#If…Then、#ElseIf…Then、#Else、#End If、#Const… = …等語句定義編譯時使用的語句而由於VBScript不需要編譯即可被WSH直接解釋執行，所以並不需要條件編譯語句。安全性.微軟決定Outlook和Outlook Express中的HTML郵件可以使用VBScript後出現了許多利用Windows Script Host和ActiveX的功能的電腦病毒。這些病毒之所以能夠傳播開來也是因為一開始這些系統功能完全未受保護。雖然VBScript和JavaScript使用同樣的使用作業系統的功能的安全措施，今天這些功能被看作不符合標準。一般很難保護VBScript的程式碼不被使用者看到。