如果你使用過UNIX上的Shell Script(命令解釋器腳本)
那麼對Unix下的腳本編程一定深有感觸
利用UNIX上的各種Shell Script
例如C
Shell
TCL/TK
Perl
UNIX管理員往往用一個腳本就可以完成你半天的編程才能完成的任務
但在微軟的世界中一直沒有夠份量的類似東西出現
充其量我們只能寫寫簡單的Batch File(就是DOS下的批處理命令)
但它所提供的功能也太過於簡單
無法處理復雜的事情
不過以前在DOS下還有Basic可以解一點燃眉之急
誰知道到了Windows
以後連Basic都不復存在
讓我們這些喜歡DIY的朋友們很不舒服
其實在Windows方便的操作界面下掩蓋著更為強大的功能
你聽說過WSH嗎?它的全稱是Windows Scripting Host
中文名字可以叫它Windows平台指令主機
就是它
讓你通過威力強大的VBScript和JavaScript腳本
來實現強大的功能
再也不用羨慕UNIX平台下的各種Shell Script了……
WSH的優點
WSH可以在
位Windows平台上提供簡單
威力強大以及具有彈性的指令環境
更有威力的指令系統
在以前
Windows操作系統支持的唯一類似於腳本語言的是MS
DOS的批處理命令
雖然MS
DOS指令又快又小
但和VBScript及JavaScript相比
MS
DOS受到許多限制
今天
架構於ActiveX之上的WSH允許使用者利用威力強大的指令語言如VBScript與JavaScript
同時MS
DOS指令WSH仍可以支持
不過對於腳本語言來說
它只是很小的一個方面了
Windows腳本語言的執行環境
以前的MS
DOS類的命令只可以在DOS下或者DOS窗口下使用
現在不一樣了
Microsoft目前在 Windows平台上提供三種腳本語言的執行環境:
WSH架構
長久以來
Windows操作系統都缺乏一個真正的Shell程序功能
因此微軟就針對了這個問題提出了WSH的架構
把解釋程序語言的部分以及提供功能服務
像是顯示信息
存取文件
或是讀寫注冊表 (Registry) 等部分功能分開
解釋的部分交給相應語言的解釋引擎(Scripting Engine)
而提供功能服務的部分就稱為一個執行環境 (Scripting Host)
WSH就是專為在Windows系統下執行這種服務程序的環境
剛才所討論的解釋與服務分開的方式就是微軟的ActiveX Scripting架構
圖
就說明了WSH的架構以及執行環境與解釋引擎之間的關系
在這個圖中
我們假設要執行Tentimes
vbs腳本
它的具體步驟是:
先執行WSH(Windows
帶有字符模式的cscript
exe和圖形界面的Wscript
exe)
告訴它執行tentimes
vbs腳本
具體的命令行是:
cscript tentimes
vbs或者wscript tentimes
vbs
這是WSH會根據所要執行腳本的後綴名(VBS)
到系統注冊表中查詢可以解釋這種程序的解釋引擎(Windows
附有VBScript和JavaScript兩種語言的解釋引擎
你也可以自己安裝其它語言的解釋引擎
比如Perl)
找出解釋引擎之後
WSH會將程序一行一行從腳本中讀出
然後送到解釋引擎
由解釋引擎解釋程序所要執行的動作
如果所要執行的動作必須要使用到WSH所提供的服務
例如存取文件或是注冊表的內容
就向WSH提出要求
由WSH負責處理
通過這樣的方式
不管你使用何種語言
只要有該語言的解釋引擎
就可以在WSH下執行該種語言編寫的程序
並且可以使用WSH所提供的服務
也許有的朋友要問:WSH是如何將這些服務提供給腳本語言呢?其實很簡單
它其實相當於我們練習編程的那些函數(當然了
微軟稱它們為對象
屬性和方法)
通過這些接口實現腳本和操作系統的對話
好了
閒話少說
我們先來看看WSH到底有何神通……
Windows
/Me
Windowns NT+IIS和Windows
都已經附帶有WSH(不用去找那些煩人的編程語言IDE^_^)
如果你用的是Windows
或者你想將你的WSH更新到最新版本
沒有問題
到微軟的WSH站點下載一個就是
當前的最新版本是
不過你下載的時候可要看清楚語言版本
中文的一定要選擇Chinese/Simplified
下載不一致的語言版本回來可是不能安裝的
同時你還要選擇適合自己操作系統的版本
Windows
和其它操作系統是不同的
另外如果你想好好看一下WSH的幫助文檔(WSH的幫助文檔可不是像Linux下都隨軟件帶有
它是需要另外下載的)
也可以到前邊所說的網址下載一個可執行文件
安裝以後在\Program Files\Microsoft Windows Script\WSHdocs下找到一個WSH
chm的幫助文件
裡面有WSH的詳細說明
這個東西你可千萬不能少了……
WSH使用初探
整個WSH中
Script語言都是以對象(Object)為基礎在運作
講到對象自然就會有所謂的方法(Method)和屬性(Property)
所以要使用WSH的第一步就是建立一個對象
然後利用該對象的各種方法和屬性
WSH提供以下幾個對象:
Script
Network:用來與網絡溝通
通過它
你可以取得網絡的各種信息
比如IP地址
網上鄰居列表等等
WScript
Shell:與操作系統溝通
你可以通過該對象在桌面建立快捷方式
建立/刪除注冊表鍵值
Excel
Application:與Excel溝通
不但可以在Excel中顯示WSH內容
而且可以用WSH存取Excel和顯示圖表
此外
WSH還可以顯示一些窗口和捕捉鼠標的輸入等等
這裡就不再枚舉
下邊我們看看它具體是如何使用的:
建立一個彈出窗口
記得以前在所有的編程科目學習中
老師都會讓我們編寫一個Hello
World!的實例
這裡我們先看看如何完成一個Hello
World的彈出窗口
打開記事本
輸入以下代碼
保存為PopUp
js
然後執行一下看看效果是否和圖
一樣
function showit(){
var Message =
Hello
World!
;
var timeout =
;
var title =
Hello
World!
;
var buttons =
;
var rslt;
var WS = WScript
CreateObject(
WScript
Shell
);
rslt = WS
Popup(Message
timeout
title
buttons);
if ( rslt ==
) {
WScript
Quit;
}
}
showit();
顯示網絡信息(見圖
)
讓我們看看如何顯示使用者工作組
使用者姓名
和電腦名稱
使用記事本建立network
vbs
內容如下:
Set WSHNetwork = WScript
CreateObject(
WScript
Network
)
顯示WSHNetwork object的properties
MsgBox
使用者工作組:
& WSHNetwork
UserDomain & Chr(
) & Chr(
) &
使用者姓名:
& WSHNetwork
UserName & Chr(
) & Chr(
) &
電腦名稱 :
& WSHNetwork
ComputerName
vbInformation + vbOKOnly
WSHNetwork 內容
桌面快捷方式的建立
Shortcut
vbs
Set WSHShell = WScript
CreateObject(
WScript
Shell
)
使用SpecialFolders讀取桌面路徑
DesktopPath = WSHShell
SpecialFolders(
Desktop
)
於桌面上建立快捷方式
Set Shortcut
= WSHShell
CreateShortcut(DesktopPath &
\記事本
lnk
)
設定快捷方式的屬性並保存
Shortcut
TargetPath = WSHShell
ExpandEnvironmentStrings(
%windir%\notepad
exe
)
Shortcut
WorkingDirectory = WSHShell
ExpandEnvironmentStrings(
%windir%
)
Shortcut
WindowStyle =
Shortcut
IconLocation = WSHShell
ExpandEnvironmentStrings(
%windir%\notepad
exe
)
Shortcut
Save
WSH與Excel溝通(見圖
)
讓我們看看如何在Excel中顯示WSH內容
使用記事本開啟excel
vbs
內容如下:
Set objXL = WScript
CreateObject(
Excel
Application
)
objXL
Visible = TRUE
objXL
WorkBooks
Add
objXL
Columns(
)
ColumnWidth =
objXL
Columns(
)
ColumnWidth =
objXL
Columns(
)
ColumnWidth =
objXL
Cells(
)
Value =
屬性名稱
objXL
Cells(
)
Value =
值
objXL
Cells(
)
Value =
描述
objXL
Range(
A
:C
)
Select
objXL
Selection
Font
Bold = True
objXL
Selection
Interior
ColorIndex =
objXL
Selection
Interior
Pattern =
xlSolid
objXL
Selection
Font
ColorIndex =
objXL
Columns(
B:B
)
Select
objXL
Selection
HorizontalAlignment = &hFFFFEFDD
xlLeft
Dim intIndex
intIndex =
顯示WScript properties
Call Show(
Name
WScript
Name
應用程序名稱
)
Call Show(
Version
WScript
Version
應用程序版本
)
Call Show(
FullName
WScript
FullName
應用程序內容: 完整名稱
)
Call Show(
Path
WScript
Path
應用程序內容: 只有路徑
)
Call Show(
Interactive
WScript
Interactive
互動模式狀態
)
顯示命令行參數
Dim colArgs
Set colArgs = WScript
Arguments
Call Show(
Arguments
Count
colArgs
Count
指令列引數數目
)
For i =
to colArgs
Count
objXL
Cells(intIndex
)
Value =
Arguments(
& i &
)
objXL
Cells(intIndex
)
Value = colArgs(i)
intIndex = intIndex +
objXL
Cells(intIndex
)
Select
Next
Sub Show(strName
st
From:http://tw.wingwit.com/Article/os/xtgl/201311/8669.html