从新批处理文件中的netstat -e获取一些信息

问题描述 投票:1回答:2

Hy,我想创建批处理文件以向用户显示有关Downloaded packages和Uploaded packages的信息。这个信息我可以从命令'netstat -e'获得,我可以使用'netstat -e> log.txt'将此信息保存在日志文件中。但我希望,在打开这个新的批处理文件时,该用户只能看到有关Downloaded和Uploaded软件包的信息,而不是此命令的所有信息,如下所示:

下载的软件包:-info from netstat -e-

上传的包:来自netstat -e-的-info

是否可以从日志文件中删除此信息并在用户打开此批处理时将其放入批处理文件中?打开批处理文件之后的整个过程看起来像这样: - 使用'netstat -e> log.txt'保存日志文件, - 保存所需信息, - 在批处理文件中输出此信息, - 现在用户看到此信息。

执行此操作的方法可以是任何操作,例如使用cmd和VBS或其他方法。

networking vbscript batch-file
2个回答
0
投票

只需通过find命令管理netstat的结果就像这样

netstat -e | find "Bytes"

您仍然可以重定向到这样的文本文件

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

编辑:根据你的评论在这里更多的可能性

无需单独的程序。您可以通过注释将2个值传递给像这样的测试或批处理文件。对于/ F,文本在parantheses之间''执行命令并让let解析结果。 Tokens = 2,3跳过第一个结果(Bytes)并将另外两个放在一个单独的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

1
投票

如果您需要以更复杂的方式处理和/或显示来自netstat(或其他控制台工具)的信息,则VBScript版本可以更好地扩展:

  ' 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
© www.soinside.com 2019 - 2024. All rights reserved.