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（Windows Server License Manager Script）。

### 網頁瀏覽器（客戶端的 VBS）

網頁中的 VBS 可以用來控制客戶端的網頁瀏覽器（以瀏覽器執行 VBS 程式）。VBS 與 JavaScript 在這一方面是競爭者，它們可以用來實現動態 HTML，甚至可以將整個程式結合到網頁中來。

至今為止 VBS 在客戶方面未能占優勢，因為它只獲得 Microsoft Internet Explorer 的支援（Mozilla Suite 可以透過安裝一個套件來支援 VBS），並且 IE11 起已不再支援 VBScript。而 JavaScript 則受到所有網頁瀏覽器的支援。在 Internet Explorer 中 VBS 和 JavaScript 使用同樣的權限，它們只能有限地使用 Windows 作業系統中的物件。

### 網頁伺服器（伺服器方面的 VBS）

在網頁伺服器方面 VBS 是微軟的 Active Server Pages 的一部份，它與 JavaServer Pages 和 PHP 是競爭對手。在這裡 VBS 的程式碼直接嵌入到 HTML 頁內，這樣的網頁以 ASP 結尾。網頁伺服器 Internet 資訊服務執行 ASP 頁內的程式部份並將其結果轉化為 HTML 傳遞給網頁瀏覽器供使用者使用。這樣伺服器可以進行資料庫聞訊並將其結果放到 HTML 網頁中。

## 示範

### Hello World

最簡單的例子：

以 `.vbs` 檔案儲存。再使用 `cscript.exe` 或 `wscript.exe` 執行。

一個更複雜的例子中，示出了使用 `MsgBox` 作為函式（返回一個結果），並使用了三個參數，其中第二個參數使用的是常數。

### 終止任務

VBScript 能存取 Windows 管理規範 (WMI)，就像 Windows 工作管理員。以下的程式碼執行時將會終止（「殺掉」）任何關於 _notepad.exe_ 的處理程序。

使用 _Option Explicit_ 並不是必須的，但它被認為是 VBScript 的最佳實踐。

### 建立具有唯一的名稱的十個檔案

這個實例顯示如何建立檔案並向它添加內容。它還演示了字串連接。

### 傳送按鍵

SendKeys 方法類比一個或多個按鍵到活動視窗（類比在鍵盤上輸入）。 在該範例中，指令碼傳送字串「Hello World！」3 次，每次暫停 2 秒（2000 毫秒）。SendKeys 巨集可能會在某些程式中失效，因為一些軟體（如在安裝時輸入許可證金鑰）將檢查是否是真正的按鍵，而不是虛擬的。

執行期間，「Hello World!」將顯示在命令提示字元。

### Windows 檔案操作

物件 FileSystemObject 執行一些檔案操作（例如測試一個檔案是否存在），並且還建立一個文字檔案（一個 TextStream 物件）。

`MakeHelloWorldFile` 將會在按下按鈕後於 C:\ 驅動器根目錄建立（若已經存在則更新）一個小文字檔案。

### Excel 物件操作

## 語言

VBScript 主要的優點有：

* 由於 VBScript 由作業系統，而不是由網頁瀏覽器解釋，它的檔案比較小。
* 易學。
* 在所有 2000 / 98SE 以後的 Windows 版本都可直接使用。
* 可以使用其它程式和可使用的物件（尤其是 Microsoft Office）。

缺點有：

* 現在 VBS 無法作為電子郵件的附件了。Microsoft Outlook 拒絕接受 VBS 為附件，收信人無法直接使用 VBS 附件。
* VBS 的各種編輯器不受歡迎。
* 作業系統沒有任何特別的保護設施。VBS 程式與其它 JS、EXE、BAT 或 CMD 程式一樣對待。作業系統沒有監察惡意功能的能力。

## 和 VB 的對比

### 不能為變數定義類型

在 VB 中，為變數定義類型使用「Dim 變數名 As 類型」的語句格式。

但是在 VBScript 中這樣寫是錯誤的，VBScript 中的變數都是弱型別（即 Variant 變體），因此它不需要指定類型。只能使用「Dim 變數名」的格式，直譯器會自動根據賦值的類型定義變數類型。

### 不能使用條件編譯

在 VB 中，可以使用 #If…Then、#ElseIf…Then、#Else、#End If、#Const… = … 等語句定義編譯時使用的語句

而由於 VBScript 不需要編譯即可被 WSH（Windows Script Host）直接解釋執行，所以並不需要條件編譯語句。

## 安全性

微軟決定 Outlook 和 Outlook Express 中的 HTML 郵件可以使用 VBScript 後出現了許多利用 Windows Script Host 和 ActiveX 的功能的電腦病毒。這些病毒之所以能夠傳播開來也是因為一開始這些系統功能完全未受保護。雖然 VBScript 和 JavaScript 使用同樣的使用作業系統的功能的安全措施，今天這些功能被看作不符合標準。

一般很難保護 VBScript 的程式碼不被使用者看到。

## 參考資料

## 外部連結

* VBScript User's Guide （頁面存檔備份，存於網際網路檔案館）
* VBScript Language Reference （頁面存檔備份，存於網際網路檔案館）