600 likes | 818 Views
第 24 章 WSH 範例精選. 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR 實驗室. 本章大綱. 大綱 本章提供了各種常用 WSH 的程式範例,讓讀者能夠一覽 WSH 的典型應用。 主題 24-1 :桌面處理 24-2 :檔案處理 24-3 :目錄與磁碟機處理 24-4 :電腦系統管理 24-5 :網頁伺服器的管理 24-6 :通用表示法的應用 24-7 :網頁抓取與處理 24-8 :與資料庫整合 24-9 :使用 wsInetTools.dll
E N D
第24章WSH 範例精選 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室
本章大綱 • 大綱 • 本章提供了各種常用 WSH 的程式範例,讓讀者能夠一覽 WSH 的典型應用。 • 主題 • 24-1:桌面處理 • 24-2:檔案處理 • 24-3:目錄與磁碟機處理 • 24-4:電腦系統管理 • 24-5:網頁伺服器的管理 • 24-6:通用表示法的應用 • 24-7:網頁抓取與處理 • 24-8:與資料庫整合 • 24-9:使用 wsInetTools.dll • 24-10:傳送鍵盤事件
24-1:桌面處理 • 本小節將說明如何使用 WSH 來對電腦桌面進行簡單的管理。
範例24-1 • 主題:在桌面建立記事本的捷徑 • 連結:執行結果檢視原始碼 • 程式碼 • 說明 • 執行上述程式後,你會在你的電腦桌面發現一個新捷徑,名稱為「WSH 產生的記事本捷徑」。
範例24-2 • 主題:將一段由 WSH 產生的文字送到剪貼簿 • 連結:執行結果檢視原始碼 • 程式碼 • 說明 • 執行上述範例後,開啟記事本並按 Ctrl-v,極可將剪貼簿中的文字貼到記事本。 • How to set IE visible? • Can you create a simpler example?
範例24-3 • 主題:對桌面視窗進行直接的串接 • 連結:執行結果檢視原始碼 • 程式碼 • 說明 • 執行後,即可重疊顯示螢幕上的視窗 • 當桌面上太多視窗時,可用此方法整理
範例24-4 • 主題:對桌面視窗進行水平並排 • 連結:執行結果檢視原始碼 • 程式碼 • 說明 • 此方法可以水平並排螢幕上的視窗
範例24-5 • 主題:對桌面視窗進行垂直並排 • 連結:執行結果檢視原始碼 • 程式碼 • 說明 • 執行後,即可垂直並排螢幕上的視窗
24-2:檔案處理 • 本小節將以範例說明WSH 對於檔案的讀寫
範例24-6 • 主題:將file1.txt 及 file2.txt 的內容寫到 file3.txt • 連結:執行結果檢視原始碼 • 程式碼重點 • 說明 • file1.txt的檔案內容為”這是 file1.txt 的內容。”file2.txt的檔案內容為”這是 file2.txt 的內容。”執行後的file3.txt內容為”這是 file1.txt 的內容。這是 file2.txt 的內容。”
範例24-7 (1/2) • 主題:若常讀取檔案,可以函數 fileRead(),將讀取 的檔案內容送到陣列,便於進行逐列的處理。 • 連結:執行結果檢視原始碼 • 說明: • 第一段的程式碼是將檔案內容傳送至陣列 • 第二段的程式碼則是函數的定義 • 執行fileRead01.js後,將在 DOS 命令視窗印出此檔案的內容並加入列數,詳細內容見下頁
範例24-8 • 主題:使用 WSH 來讀取與檔案相關的性質 • 連結:執行結果檢視原始碼 • 程式碼重點 • 說明 • 要抓出所有性質,我們可以從for-in迴圈著手。Can someone give me a working example?
24-3:目錄與磁碟機處理 • 本小節將以範例說明WSH 對於目錄與磁碟機處理
範例24-9 • 主題:顯示某一個資料夾的大小 • 連結:執行結果檢視原始碼 • 程式碼 • 說明: • 執行上述程式後,典型顯示結果如下:目錄的大小是 15365403102 bytes. • 若 folderPath 設定成 C 槽,會有權限問題,如何解決?
範例24-10 • 主題:使用 WSH 顯示目前工作目錄,或是改變目前工作目錄 • 連結:執行結果檢視原始碼 • 程式碼 • 說明: • 典型顯示結果如下: • 目前工作目錄:D:\users\jang\books\wsh\example • 改變目前工作目錄至:c:\windows\temp • Not working! Help needed…
範例24-11 • 主題:列出一特定目錄下的所有檔案 • 連結:執行結果檢視原始碼 • 程式碼 • 說明: • 執行後即可列出 c:\windows\temp 目錄下的所有檔案
範例24-12 • 主題:列出磁碟機及其相關性質 • 連結:執行結果檢視原始碼 • 說明:典型顯示結果如下
24-4:電腦系統管理 • 本小節將以範例說明WSH 對於電腦系統的管理
範例24-13 • 主題:列出與 SYSTEM 相關的重要環境變數 • 連結:執行結果檢視原始碼 • 說明:
範例24-14 • 主題:列出與 SYSTEM 相關的全部環境變數 • 連結:執行結果檢視原始碼 • 程式碼重點
範例24-15 • 主題:列出與 PROCESS 相關的全部環境變數 • 連結:執行結果檢視原始碼 • 程式碼重點
範例24-17 • 主題:列出電腦、網域名稱及使用者名稱等資訊 • 連結:執行結果檢視原始碼 • 程式碼
範例24-18 • 主題:顯示此機器的所有使用者 • 連結:執行結果檢視原始碼 • 說明 • 如果使用者只有一個,通常是administrator。
24-5:網頁伺服器的管理 • 本小節將以範例說明使用 WSH 來管理微軟的網頁伺服器
範例24-19 • 主題:列出 IIS 網頁伺服器的性質 • 連結:執行結果檢視原始碼 • 說明 • 可以修改性質來更改iis各種屬性。
範例24-20 • 主題:產生虛擬目錄 • 連結:執行結果檢視原始碼 • 說明 • 首先定義位址物件,“IIS://LocalHost/W3SVC/1/Root”表示於預設的 Web 站台的主目錄下建立虛擬目錄。 • 使用“Create("IISWebVirtualDir","虛擬目錄名稱")”方法,以建立虛擬目錄。 • 執行後產生的虛擬目錄是 winTemp,對應到實際硬碟的目錄是 c:\windows\temp。經由「控制台/系統管理工具/Internet Information Services」可以開啟 IIS 管理介面,以確認虛擬目錄 winTemp 的存在。
範例24-21 • 主題:使用 WSH 來控制 IIS 網頁伺服器 • 連結:執行結果檢視原始碼 • 程式碼 • 說明 • 範例中,我們可以對 IIS 進行暫停、繼續、停止、啟動等控制。
24-6:通用表示法的應用 • 本小節說明在 WSH 也可以使用通用表示法,此方式可以讓我們很快地在大量文字中間找到我們所要的資訊。
範例24-22 • 主題:找出一個網頁的標題 • 連結:執行結果檢視原始碼 • 說明 • 此程式碼會重從 test.htm 找出此網頁的標題,印出結果如下 • 在上述範例中,title[1] 和 RegExp.$1 儲存相同的結果。
範例24-23 • 主題:找出以JScript為主WSH 檔案的第一列註解 • 連結:執行結果檢視原始碼 • 程式碼重點 • 說明 • 印出結果 • 本範例前半段與上一範例相同
範例24-24 • 主題:對範例目錄製作index.asp 的檔案 • Webpage: remote host, local host • 說明 • 採用6-2的方式,可以對範例目錄製作一個 index.asp 的檔案,即時地將每一個 js 檔案的第一列註解列印出來,形成一頁對 WSH 的所有 JScript 範例的列表和簡單說明
範例24-25 • 主題:從一段文字中,抽取連結文字與相關網址 • 連結:執行結果檢視原始碼 • 說明 • 顯示結果如下:
範例24-26 • 主題:從一個檔案中,抽取連結文字與相關網址 • 連結:執行結果檢視原始碼 • 說明 • 務必將程式碼 linkExtraction02.js 和網頁檔案 test.htm 放在同一個目錄。
24-7:網頁抓取與處理 • 本小節將說明如何使用 WSH 來直接抓取網頁
使用 InetCtls.Inet • 若要使用 WSH 來直接抓取網頁,可以使用 Visual Basic 6 的元件 InetCtls.Inet • 安裝方法如下 • 從下列網址下載壓縮檔案 msinet.cab: http://activex.microsoft.com/controls/vb6/msinet.cab(近端備份:...\wsh\download\msinet.cab) • 對 msinet.cab 進行解壓縮,得到 MSINET.INF 和 MSINET.OCX,將這兩個檔案放到 c:\windows\system32 目錄下。 • 開啟 DOS 視窗,進入 c:\windows\system32 目錄,執行「regsvr32 msinet.ocx」,即可完成安裝。
範例24-27 • 主題:使用 WSH 來直接抓取網頁 • 連結:執行結果檢視原始碼 • 程式碼 • 說明 • 欲下載之網頁與設定的嘗試時間皆可依需求更改
範例24-28 • 主題:使用通用運算式,便可以在抓取網頁後,顯示此網頁的標題 • 連結:執行結果檢視原始碼 • 程式碼重點 • 說明 • 最後一行的功能為顯示結果
範例24-29 • 主題:在抓取一個網頁後,立即將網頁儲存到硬碟中的某個檔案 • 連結:執行結果檢視原始碼 • 程式碼 • 說明 • 此段程式碼的目的是將網頁內容寫入本機檔案
範例24-30 • 主題:利用通用表示法抓出網頁中連結和相關文字 • 連結:執行結果檢視原始碼 • 程式碼重點
範例24-31 • 主題:使用WinHttpRequest物件抓取 Google首頁 • 連結:執行結果檢視原始碼 • 說明 • 可以暫停網路,再試看看此範例,就會印出抓不到網頁的錯誤訊息了 • 前面範例所用的 InetCtls.Inet 元件,比較簡單,所以無法偵測網路斷線的情況,而IIS內建的元件 WinHttp.WinHttpRequest,則有較多偵錯功能可以應付斷線的情況
24-8:與資料庫整合 • 本小節將介紹如何用 WSH 來對資料庫整合
範例24-31 • 主題:用 WSH 來對資料庫列表 • 連結:執行結果檢視原始碼 • 說明 • 執行後,在 DOS 命令視窗印出結果如下 • 原先以 JScript 進行資料庫列表的連結:listdb01.asp
範例24-32 • 主題:以wsh對資料庫進行新增 • 連結:執行結果檢視原始碼 • 程式碼重點 • 說明 • SQL 指令的 where 條件式是不分大小寫的,所以如果條件式是 name=‘abc’,抓出來的資料可能包含 ‘abc’、‘ABC’、‘aBc’ 等資料,若要解決此問題,請見下一個範例。
範例24-33 • 主題:使用 strcomp 函數避免SQL大小寫問題 • 連結:執行結果檢視原始碼 • 程式碼重點 • 說明 • sql2screen() 函數的功能是將 SQL 指令的結果列印在螢幕上,下個範例將說明如何把結果記錄在檔案中
範例24-34 • 主題:將 SQL 指令的結果記錄在檔案之中 • 連結:執行結果檢視原始碼 • 說明 • 此範例會將 testTable 資料表的內容儲存到 output.txt 。 • sql2file() 函數的功能即是將 SQL 指令的結果記錄在檔案之中。
24-9 使用 wsInetTools.dll • 本小節將使用幾個範例來說明此元件的功能
wsInetTools.dll的功能與下載 • 我們可以經由各種元件來加強 WSH 的功能 • wsInetTools.dll是一個使用 C++ 開發的元件,主要有下列三項功能 • 抓取網頁 • 抓取二進制檔案(例如 mp3、midi 等檔案) • 寄發電子郵件 • http://www.winscripter.com/Downloads/default.aspx可下載相關的 zip 檔案,解開以後,就可以看到 wsInetTools.dll 及相關的範例及說明。相關的說明,可見下載後的 index.htm
使用wsInetTools.dll • 使用此元件之前,必須先將此元件登錄於系統之中,可以分成兩步驟: • 將 wsInetTools.dll 拷貝到c:\windows\system32\ 之下。 • 點選「開始/執行」,然後輸入 「regsvr32 wsInetTools.dll」,按下「確定」,就完成了元件登錄的動作。 • 完成上述步驟後,就可以開始使用wsInetTools.dll
範例24-35 • 主題:直接抓取 HTML 網頁 • 連結:執行結果檢視原始碼 • 程式碼 • 說明 • 此範例使用了wsInetTools.dll 抓取 HTML 檔案