2016-06-14 14 views
1

スイッチのSNMP出力からポートをカウントアップするのに問題があります。私はこのような2000以上のテキストファイルを持っています: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のスイッチがあります。それらのうちのいくつかには、48のポートがあります。各ファイルは、異なる時間を表します。例えば

1Jun03_00_01このファイルは、私は、各スイッチの各ファイル内のすべてのものをカウントして、UPのチャートを描画したい15:00

6月の1に輸出されたことを意味それぞれのスイッ​​チのポートごとに

1はポートが上、下が2つであることを意味します。

私はエクセルで試しましたが、うまくいきませんでした。

あなたは仕事をするいくつかのツールを知っていますか?私はそれらのファイルをいくつかのデータベースにエクスポートしてから数えます。どう思いますか ?

答えて

0

これは、1つのファイルを処理することから始めます。

  1. オーバーヘッド
  2. を減らすためのFileStreamを開き、ラインがモデルが含まれている場合、それは、配列

    • 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

関連する問題