WSH是Windows腳本宿主文件。 用VBscript和Jscript都可以編寫 WSH 腳本。 要注意盡管 IE瀏覽器和WSH使用同樣的的語言 引擎,但它們不支持同樣的對象模型。例如WSH不支持用于用戶輸出的window.document對象。 WSH環境不提供擴展的用戶界面(向IE瀏覽器那樣的),WSH 對象模型不暴露用戶界面 事件(例如在HTML腳本中的onlick事件),IE瀏覽器提供的事件處理機制在WSH環境中沒有用處。 但是,WSH也是支持事件處理的。 下面是兩個最簡單的WSH腳本 hello.vbs 和 hello.js
'------------ 'hello.vbs wscript.echo " hello,word " '------------
//----------- //hello.js WScript.echo (" hello,word "); //特別注意用js編寫時,大小寫時敏感的。如:WScript 寫成了 wscript 就會報錯! //-----------
WSH 可以使用ActiveX組件,如ADO、File Access 對象或CDO for NTS,但WSH 不能使用任何內置的Ative Server Page 對象,如Appliation、Session或Request 對象等。 下面的腳本 search.vbs 用 ADO 查詢SQL Server: '------- 'search.vbs Set conn = wscript.CreateObject("ADODB.Connection") conn.Open"driver={sql server};server=000.000.00.00;uid=you;pwd=your password;"&"database=yourdata;" Set RS = Conn.Execute( "SELECT * FROM yourtable order by id desc" ) for i = 0 to RS.Fields.Count - 1 wscript.echo RS( i ).name next while not RS.EOF for i = 0 to RS.Fields.Count - 1 wscript.echo RS( i ).value next RS.MoveNext wend '------- 除了使用 wscript.CreateObject 而不是使用 server.CreateObject 來創建 Activex 對象實例、用wscript.echo而不是使用 response.write 來現示輸出外 ,這個腳本與ASp腳本完全一樣。在WSH版本1(被稱作 Windows Scripting Host)中有一個局限就是不能把其它文件包含在WSH腳本中,沒有同ASP中 #include 等效的指令。這種局限的后果之一就是無法把ADO常量文件(adovbs.inc) 包含在WSH 腳本中。要使用 ADO 常量,必須把改文件的內容復制到 WSH 文件中或在腳本 中使用常量的源值。兩種辦法都不是很好。 好在 Microsoft 總能找到解決辦法,在WSH版本2(被稱作 Windows Script Host)中除了可以使用.vbs 和 .js 之外。Microsoft還定義了一種新的文件格式,其擴展名是.wsf(即"Windows script file")。與.vbs 和 .js 一樣,.wsf文件是文本文檔,但是它包含 Extensible Markup Language (XML)代碼。一個最小的.wsf 文件 具有以下結構 如 hello.wsf: <job id="t1"> <script language="vbscript"> wscript.echo "Hello,word" </script> </job> 上面的例子代碼中只包括創建可執行.wsf 文件所需的最少的XML元素。基于兼容XML文檔規格的原因 ,推薦在.wsf文件中使用擴展的結構,如下 hello_1.wsf: <?xml version="1.0" encoding="GB2312"?> <job id="t1"> <script language="vbscript"> <![CDATA][ wscript.echo "Hello,word" ]]> </script> </job> 把<script>元素的內容封裝在在 <![CDATA][ ... ]]>結構中。
.wsf 文件可以包含 .js 和 .vbs 文件。 如 hello_2.wsf: <?xml version="1.0" encoding="GB2312"?> <job id="t1"> <script language="JScript" src="hello.js"/> <script language="vbscript"> <![CDATA][ wscript.echo "世界,你好" ]]> </script> </job> 這樣就可以解決包含 adovbs.inc 問題。將adovbs.inc 中的 "<%" 和 "%>" 刪除后重命名為adovbs.vbs ,再將search.vbs 重新組織成search.wsf 這樣就可以包含adovbs.vbs了。 如下: <?xml version="1.0" encoding="GB2312"?> <job id="t1"> <script language="vbscript" src="adovbs.vbs"/> <script language="vbscript"> <![CDATA][ Set conn = wscript.CreateObject("ADODB.Connection") conn.Open"driver={sql server};server=000.000.00.00;uid=you;pwd=yourpassword;"&"database=yourdata;" Set RS = Conn.Execute( "SELECT * FROM title1 order by id desc" ) for i = 0 to RS.Fields.Count - 1 wscript.echo RS( i ).name next while not RS.EOF for i = 0 to RS.Fields.Count - 1 wscript.echo RS( i ).value next RS.MoveNext wend ]]> </script> </job>
以上腳本在 windows me ,Windows Script Host Version 5.6下測試通過。 想了解更多WSH的信息去 微軟網站http://msdn.microsoft.com/scripting/
|