海兰,我想创建批处理文件来显示约下载包和包上传用户信息。 这个信息我可以从命令“netstat的-e”让我可以使用“netstat的-e> log.txt的”保存在日志文件中此信息。 但我想,打开此新的批处理文件时,用户可以查看有关下载和上传包,而不是从该命令的所有信息,这样的事情只有信息:
下载的软件包:-info从netstat的-E-
上传的软件包:-info从netstat的-E-
是否有可能削减从日志文件这些信息并把它放到批处理文件,当用户打开此批? 整个过程,后打开批处理文件,会是这个样子: - 保存日志文件用“netstat的-e> log.txt的”,-getting需要的信息,-put在批处理文件这些信息,用户 - 现在看到这个信息。
方法来做这可以是任何东西,比如使用CMD和VBS等。
只是管的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
一个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