获得在新的批处理文件的netstat -e一些信息(Get some information fro

2019-10-17 19:54发布

海兰,我想创建批处理文件来显示约下载包和包上传用户信息。 这个信息我可以从命令“netstat的-e”让我可以使用“netstat的-e> log.txt的”保存在日志文件中此信息。 但我想,打开此新的批处理文件时,用户可以查看有关下载和上传包,而不是从该命令的所有信息,这样的事情只有信息:

下载的软件包:-info从netstat的-E-

上传的软件包:-info从netstat的-E-

是否有可能削减从日志文件这些信息并把它放到批处理文件,当用户打开此批? 整个过程,后打开批处理文件,会是这个样子: - 保存日志文件用“netstat的-e> log.txt的”,-getting需要的信息,-put在批处理文件这些信息,用户 - 现在看到这个信息。

方法来做这可以是任何东西,比如使用CMD和VBS等。

Answer 1:

只是管的netstat通过这样find命令的结果

netstat -e | find "Bytes"

你仍然可以重定向至一个文本文件

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

编辑:基于您的评论在这里更多的可能性

无需单独的程序。 可以通过管道将2个值与在测试或批处理文件这样的评论。 对于在括号之间的文本/ F“”执行该命令,并允许用于解析的结果。 令牌= 2,3跳过第一结果(字节),并把另外两个在单独的无功

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


Answer 2:

一个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


文章来源: Get some information from netstat -e in new batch file