用vbs計算某個詞在日志文件中的出現(xiàn)次數(shù)
問:
您好,腳本專家!如何計算 Failure 一詞在日志文件中的出現(xiàn)次數(shù)?這里有個問題:由于日志文件一個接一個地寫入事件,因而創(chuàng)建了一個非常之長的文本行。
-- FS
答:
您好,F(xiàn)S。根據(jù)您電子郵件的其余部分來看,您的日志文件與下面的有些相似:
Failure 2/7/2006 8:25 AM Failure 2/7/2006 9:45 AM Success
2/7/2006 3:10 PM Failure 2/8/2006 9:15 AM Success 2/7/2006 3:01 PM
正如您提到的,您首先想到的是使用 InStr 函數(shù)來查看是否 Failure 出現(xiàn)在日志文件中每行的某個地方;然后您可以通過活動計數(shù)器計算找到該詞的次數(shù),這與我們在昨天的專欄中演示的方法非常相似。這是個好主意,但是,正如您所發(fā)現(xiàn)的,在該方案中有一個重大的缺陷:從技術角度來說,您的日志文件僅包含一行。因此,盡管實際存在很多實例,但您的腳本總是報告只發(fā)現(xiàn) Failure 的一個實例。您在郵件中寫道:但是我被難住了,因為無法將單行拆為多行。
唉,您對我們一點信心都沒有。試試這個看看是不是合適:
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\scripts\test.log", ForReading)
strContents = objFile.ReadAll
objFile.Close
i = 0
arrLines = Split(strContents, " ")
For Each strLine in arrLines
If InStr(strLine, "Failure") Then
i = i + 1
End If
Next
Wscript.Echo "Number of failures: " & i
好了,那么腳本本身呢?嗯,我們首先定義了一個名為 ForReading 的常量;我們會在稍后打開日志文件時使用此常量。接下來我們創(chuàng)建 Scripting.FileSystemObject 的實例并使用 OpenTextFile 方法打開文件 C:\Scripts\Test.log。文件打開后,我們使用 ReadAll 方法以將此文件的全部內容讀取到變量 strContents 中,然后關閉 Test.log 文件。
您清楚了嗎?接下來我們將值 0 賦于名為 i 的計數(shù)器變量;我們將使用 i 作為活動計數(shù)器來計算我們遇到 Failure 一詞的每個實例。然后我們使用下面這行代碼:
arrLines = Split(strContents, " ")
還記得您說過的,您被難住,因為日志文件整個是非常之長的一行嗎?嗯,我們在這里主要是將您的日志文件(或至少在變量 strContents 中存儲的那個版本)分成一組較短的行。在您的日志文件中,單個詞語以空格分開。在這行代碼中,我們使用 Split 函數(shù)將 strContents 的值“拆分”為數(shù)組;通過對空格拆分(即,通過每次遇到空格便在數(shù)組中創(chuàng)建新項)我們得到一個數(shù)組,其開頭如下:
Failure
2/7/2006
8:25
AM
Failure
2/7/2006
9:45
AM
Success
當然,它看起來很好笑,但是現(xiàn)在我們可以建立一個 For Each 循環(huán)來遍歷數(shù)組中的每項;更重要的是,我們還可以使用 InStr 方法查看是否可在這些行的任意行中找到 Failure 一詞。如果可以,我們將增加計數(shù)器變量 i 的值。所有這些均由下面這段代碼執(zhí)行:
For Each strLine in arrLines
If InStr(strLine, "Failure") Then
i = i + 1
End If
Next
在我們遍歷 For Each 循環(huán)后,我們所要做的只是回顯 failure,然后就完成了。
現(xiàn)在,檢查:我們所要做的只是回顯在日志文件中找到的 failure 數(shù)量。您的腳本可能在完成回顯所有 failure 之前超時很長時間。(但我們仍認為與名人共同編寫腳本要比觀看與名人共舞或滑冰更有意思。)
上一篇:用vbs實現(xiàn)配置無人登錄計算機時使用的屏幕保護程序
欄 目:vb
下一篇:VB編程基礎課教程
本文標題:用vbs計算某個詞在日志文件中的出現(xiàn)次數(shù)
本文地址:http://mengdiqiu.com.cn/a1/vb/7906.html
您可能感興趣的文章
- 01-10下載文件到本地運行的vbs
- 01-10VBS中的正則表達式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應用
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語法速查及實例說明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁面中添加VBscript代碼


閱讀排行
本欄相關
- 01-10下載文件到本地運行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個高效的軟件
- 01-10VBS中的正則表達式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語法速查及實例說明
隨機閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 04-02jquery與jsp,用jquery
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10C#中split用法實例總結
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法