2013-03-13 68 views
1

Hy,我想創建批處理文件以向用戶顯示關於已下載的軟件包和上傳的軟件包的信息。這個信息我可以從命令'netstat -e'得到,我可以使用'netstat -e> log.txt'將這些信息保存在日誌文件中。 但我想,打開此新的批處理文件時,用戶可以查看有關下載和上傳包只有信息,沒有從該命令的所有信息,這樣的事情:從新批處理文件中的netstat -e獲取一些信息

下載的軟件包: -info從netstat的-E-

上傳包: -info從netstat的-E-

是,這是不可能削減從日誌文件這些信息並把它放到批處理文件,當用戶打開此批?整個過程在打開批處理文件之後,會看起來像這樣: - 使用'netstat -e> log.txt保存日誌文件, - 獲取所需信息, - 將此信息輸入批處理文件中, -現在用戶看到這些信息。

要做到這一點的方法可以是任何東西,如使用cmd和VBS或其他。

回答

0

只是管的netstat通過這樣

netstat -e | find "Bytes" 

find命令的結果,你仍然可以重定向到一個文本文件這樣

netstat -e | find "Bytes" > text.txt 

編輯:基於您的評論在這裏更多的可能性

不需要單獨的程序。 您可以使用註釋將2個值傳遞給測試或批處理文件。 對於帶有''之間的禁忌文本的/ F執行該命令並讓For解析結果。令牌= 2,3跳過第一個結果(字節),並把另外兩個人在一個單獨的VAR

for /F "tokens=2,3" %a in ('netstat -e ^| find "Bytes"') do echo received:%a sent:%b>log.txt 

此給出的log.txt

received:74546759 sent:8593498 

,或者你可以將值設置爲環境變量並用它在批處理一樣

for /F "tokens=2,3" %a in ('netstat -e ^| find "Bytes"') do set received=%a&set sent=%b 

組給出然後

.. 
received=75230393 
sent=8966725 
.. 

也可以作爲一個參數值發送到一批這樣

for /F "tokens=2,3" %a in ('netstat -e ^| find "Bytes"') do mybatch %a %b 
+0

好了,有了這個,我只能得到字節,我需要什麼,以文本文件,但我怎麼能區分接收和發送帕茨卡ges將它們放到新的文本文件中(這將成爲批處理文件),在它們自己的部分中,即接收到下載的包和發送到上傳的包。 – Fesiitis 2013-03-13 11:40:47

+0

謝謝,用第一種方法我得到了我期待的結果。 :) – Fesiitis 2013-03-13 23:01:04

1

一個VBScript版本,擴展能力更強,如果你需要處理和/或在顯示從netstat的(或其他控制檯工具)信息更精細的方式:

' To simplify the regexp, I have stolen peter's idea of using find; %comspec% needed for | 
    Dim sCmd : sCmd = "%comspec% /c netstat -e | find ""packet""" 
    ' Shortened .Exec call; works for simple cases 
    Dim sAll : sAll = CreateObject("WScript.Shell").Exec(sCmd).Stdout.ReadAll() 
    WScript.Echo sAll 

    Dim reCut : Set reCut = New RegExp 
    reCut.Global = True 
    ' Just get all (4) numbers (non-empty sequences of digits) 
    reCut.Pattern = "\d+" 
    Dim oMTS : Set oMTS = reCut.Execute(sAll) 

    ' Use .NET formatting for nice output 
    Dim oSB : Set oSB = CreateObject("System.Text.StringBuilder") 
    oSB.AppendFormat_4 _ 
     "Info from 'netstat -e:{0}{1,21}: {2,12:D}{0}{3,21}: {4,12:D}" _ 
    , Array(_ 
      vbCrLf _ 
     , "Packages received", CLng(oMTS(0).Value) + CLng(oMTS(2).Value) _ 
     , "Packages sent" , CLng(oMTS(1).Value) + CLng(oMTS(3).Value) _ 
     ) 
    WScript.Echo oSB.ToString() 

輸出:

Unicast packets    488836   264811 
Non-unicast packets    650    652 

Info from 'netstat -e: 
    Packages received:  489486 
     Packages sent:  265463