2016-06-14 99 views
1

我在計算交換機SNMP輸出的端口時遇到了問題。我有一個看起來像這樣超過2000個文本文件:Couting來自2000多個文本文件的大量數據

"301SW00134" Model:"WS-C2950G-24-EI" 
1 
1 
1 
1 
2 
1 
1 
1 
2 
1 
1 
2 
2 
2 
2 
1 
1 
1 
2 
2 
1 
2 
1 
1 
1 
1 
1 
1 

Sum: 


"301SW00140" Model:"WS-C2950G-24-EI" 
1 
2 
... 

有每個txt文件約200開關。其中一些有24個端口大約48個。每個文件代表不同的小​​時。

例如:

1Jun03_00_01這意味着該文件是在下午3點

在6月1遠銷我希望計算每個文件的每個交換機的所有的人,然後畫了一個圖每個交換機都有我們的端口。

1表示端口向上,向下2。

我嘗試過使用excel,但它並不順利。

你們知道一些工具可以完成這項工作嗎?我雖然關於在某些數據庫中導出這些文件然後計數。你怎麼看 ?

回答

0

這會讓您開始處理單個文件。

  1. 打開的FileStream以減少開銷
  2. 逐行讀取代碼行
  3. 如果行包含模型,可以添加一個新的SwitchCounter到一個數組

    • SwitchCounter:店鋪名稱,型號和端口計數

Set objFSO = CreateObject("Scripting.FileSystemObject") 
 
Set objFile = objFSO.OpenTextFile ("C:\Users\best buy\Downloads\stackoverflow\test.txt", 1) 
 
Dim arCounters, intSize 
 
i = 0 
 

 
Do Until objFile.AtEndOfStream 
 
\t s = objFile.ReadLine 
 
    \t If InStr(s,"Model:") Then 
 
    \t \t Set counter = New SwitchCounter 
 
    \t \t counter.Init s 
 
    \t \t If i = 0 Then 
 
    \t \t \t ReDim arCounters(0) 
 
    \t \t Else 
 
    \t \t \t ReDim Preserve arCounters(i) 
 
    \t \t End If 
 
    \t \t Set arCounters(i) = counter 
 
    \t \t i = i + 1 
 
    \t Else 
 
    \t \t If IsNumeric(s) Then counter.Add s 
 
    \t End If 
 
Loop 
 

 
For Each counter In arCounters 
 
\t WScript.Echo counter.name 
 
Next 
 

 
Class SwitchCounter 
 
\t Public model 
 
\t Public name 
 
\t Public Count 
 
\t '"301SW00134" Model:"WS-C2950G-24-EI" 
 
\t Public Sub Init(s) 
 
\t \t s = Replace(s,"Model:", "") 
 
\t \t s = Replace (s,Chr(34), "") 
 
\t \t 
 
\t \t model = Split(s, " ")(1) 
 
\t \t name = Split(s, " ")(0) 
 
\t End Sub 
 
\t 
 
\t Public Sub Add(n) 
 
\t \t Count = Count + CInt(n) 
 
\t End Sub 
 
End Class

相關問題