嗨,Scripting Guy!

嗨,Scripting Guy!

歡迎蒞臨 TechNet 專欄,Microsoft Scripting Guys 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

還有,別忘了瞧瞧全新經過改良的嗨,Scripting Guy!過往文件

今天的問題:如何定期重新整理網頁?


如何定期重新整理網頁?

嗨,Scripting Guy!如何定期重新整理網頁呢?

-- TZ

TZ,您好。你知道,最近這幾個禮拜以來,是 Scripting Guys 最難熬的一段時期;因為我們確信,我們之中有一個人會成為美國最高法院的下一任首席大法官。(我們甚至還買了長袍和一切必備用品,不知道是什麼原因,彼得不肯讓我們退還長袍)。反而逼我們坐下來,看白宮首席特派員羅伯茲回答有關建構主義和判例適用性的問題。說得倒輕鬆!我們還想看特派員羅伯茲回答一些問題呢!比如說,「如何定期重新整理網頁呢?」

對喔,你們大概想知道我們怎麼回答這類問題,比如說,「如何定期重新整理網頁呢?」遵命:

On Error Resume Next
Set objExplorer = CreateObject("InternetExplorer.Application")
objExplorer.Navigate "https://www.microsoft.com/technet/scriptcenter"   
objExplorer.Visible = 1
Wscript.Sleep 5000
Set objDoc = objExplorer.Document
Do While True
    Wscript.Sleep 30000
    objDoc.Location.Reload(True)
    If Err <> 0 Then
        Wscript.Quit
    End If
Loop

秘訣就在於:使用指令碼啟動 Internet Explorer,然後利用該指令碼傳遞命令給瀏覽器。要完成這項作業,必須先從新增 On Error Resume Next 陳述式 (這個以後再討論) 開始,然後再建立 InternetExplorer.Application 物件的執行個體。我們要使用 Navigate 方法,開啟所要的網頁 (嘿,真是巧啊:正好是 Script Center 的首頁!),接著將 Visible 屬性設定為 1。(這個很重要嗎?是很重要,這樣我們才能確實看到 Internet Explorer 的執行個體)。

再下來,我們要使用 Wscript.Sleep,讓指令碼暫停 5 秒鐘 (5,000 毫秒)。這樣做是為了確保讓 Internet Explorer 完整地載入,再進行以下的程序;如果 Internet Explorer「並未」完全載入,那麼我們下一行程式碼就很可能會失敗,也就是說,我們的指令碼很可能會失敗。

順便一提,這下一行程式碼會建立 Internet Explorer 文件物件的物件參考。我們需要這個物件參考,因為若要重新整理網頁,我們必須重新載入目前的 Internet Explorer 文件。這就是 Internet Explorer 物件模型的運作方式。

建立這個物件參考以後,我們要設定 Do While 迴圈,讓它永遠不斷地執行。(別擔心!有一個很簡單的方法可以讓指令碼停止)。我們在該迴圈中呼叫 Sleep 方法,然後讓指令碼暫停 30 秒,因為我們決定要每隔 30 秒重新整理一次網頁。如果要每隔兩分鐘重新整理一次網頁呢?沒問題;只要使用下面這行程式碼,讓指令碼暫停 120 秒 (120,000 毫秒),就行了:

Wscript.Sleep 120000

30 秒時間到了以後,我們再呼叫 Reload 方法,再重新載入目前的文件。我們傳遞單一參數 True 給 Reload,指示 Internet Explorer「從網路伺服器」重新載入文件。如果沒有這個參數,Reload 會從 Internet Explorer 快取區重新載入,也就是說,我們無法取得最新、最好的網頁版本。

呼叫了 Reload 方法之後,我們會再檢查 Err 物件的值。如果發生錯誤 (而罪魁禍首通常是有人關閉了瀏覽器視窗),我們只要直接終止指令碼就行了。如果沒有發生任何錯誤,我們就執行迴圈作業,等候 30 秒,然後從頭再執行一次。

是的,沒錯!這就是結束指令碼最簡單的方式:只要關閉瀏覽器視窗即可。完成上述作業以後,30 秒之內指令碼就會終止。

就這樣,定期重新整理網頁的指令碼。我們倒很希望見到角逐最高法院首席大法官的提名人選 (應該說是經驗豐富的大法官),來寫寫看這樣的指令碼。

好,我們的意思是,除了 Ruth Bader Ginsburg 以外。


如需詳細資訊

請參閱嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首