2016-06-14 94 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

相关问题