Set objLogParser = CreateObject("MSUtil.LogQuery")
Set objInputFormat = CreateObject("MSUtil.LogQuery.FileSystemInputFormat")
objInputFormat.Recurse = -1
Set objOutputFormat = CreateObject("MSUtil.LogQuery.NativeOutputFormat")
objOutputFormat.rtp = -1
strQuery = "SELECT Top 20 Path, Size FROM 'C:\*.*, D:\*.*' ORDER BY Size DESC"
objLogParser.ExecuteBatch strQuery, objInputFormat, objOutputFormat
今天我們將不會深入解說這個指令碼。如果您想進一步瞭解,請參閱《指令碼的物語》(英文) 專欄。您會注意到,指令碼一開始先建立 MSUtil.LogQuery 物件執行個體,然後使用這行程式碼來指明我們想要使用檔案系統中的物件:
Set objInputFormat = CreateObject("MSUtil.LogQuery.FileSystemInputFormat")
接著將 Recurse 屬性的值設為 -1,告訴了 Log Parser 我們想要以遞迴方式搜尋特定路徑中的所有資料夾。(沒錯,路徑尚未指定,我們等一下馬上就指定)。
這些程式碼的前面幾行設定了輸入參數。接著我們使用這兩行程式碼來設定輸出參數:
Set objOutputFormat = CreateObject("MSUtil.LogQuery.NativeOutputFormat")
objOutputFormat.rtp = -1
我們將不會在此深入詳盡說明。第一行告訴 Log Parser 將資料輸出至命令視窗,設定 rtp 屬性為 -1 來告知 Log Parser 一次編寫所有的資料,不要在每個螢幕之後暫停等候使用者按下任何按鍵來繼續。使用 Log Parser 時,您可以自由地將資料輸出至命令視窗,目前這樣似乎是最簡單直接的方法。
處理好輸入及輸出參數之後,我們接下來要建立 Log Parser 查詢:
strQuery = "SELECT Top 20 Path, Size FROM 'C:\*.*, D:\*.*' ORDER BY Size DESC"
如果您已經有一些編寫 SQL 查詢的經驗,這一行的程式碼應該不難懂。我們在此所做的就是要求前 20 大的檔案。我們要求了「前 20 大」檔案,然後以大小遞減的順序排序。當我們做出此要求時,Log Parser 將會抓取所有的檔案,然後將它們以遞減順序排序。因為我們只要前 20 大檔案,所以螢幕上只會秀出前 20 大檔案。要是我們想要前 50 大檔案呢?那我們就要求要前 50 大檔案:
strQuery = "SELECT Top 50 Path, Size FROM 'C:\*.*, D:\*.*' ORDER BY Size DESC"
要是我們想要前 20 小檔案呢?那樣的話,我們就可以遞增順序排序檔案,這樣最小的檔案就會列在清單的最上方:
strQuery = "SELECT Top 20 Path, Size FROM 'C:\*.*, D:\*.*' ORDER BY Size ASC"
看到了嗎?跟您說過很簡單的。
如您所見,我們只有要求檔案路徑及檔案大小。當然我們也可以取得檔案的其他資訊。(請參閱 Log Parser 文件,以取得其他詳細資訊)。請注意我們需要指明想要搜尋的每個磁碟,以逗號區隔每個磁碟:
strQuery = "SELECT Top 20 Path, Size FROM 'C:\*.*, D:\*.*' ORDER BY Size DESC"
此外,*.* 是一種標準檔案系統萬用字元,表示「所有的檔案,不管是檔案名稱或是副檔名」。如果我們只對前 20 大 Microsoft Word 文件有興趣,可以將查詢修該如下:
strQuery = "SELECT Top 20 Path, Size FROM 'C:\*.doc, D:\*.doc' ORDER BY Size DESC"
將指令碼儲存為 .vbs 檔案使用,您會發現被取回電腦前 20 大檔案的資訊真是快的嚇人。
但應該不會比發現傳統英式早餐竟然以烤豆子和烤番茄為主食時還驚訝,算了,畢竟都是食物,能吃就好。
當然啦,如果裡面有蝸牛,就又另當別論。 |