标题: [网络连接] 流量监控的批处理怎么修改? [打印本页]
作者: easynet 时间: 2014-8-19 15:39 标题: 流量监控的批处理怎么修改?
我在网上找到一段关于流量监控的批处理,可是运行后计数全为0,不知这个批处理哪有问题,请帮忙看看。我的系统是WIN8.1。- @echo off & setlocal ENABLEDELAYEDEXPANSION
- MODE con: COLS=22 LINES=10
-
- for /f "tokens=2,3" %%i in ('netstat -e ^|findstr "Bytes"') do (
- set oldrec=%%i
- set oldsent=%%j
- )
-
- :loop
-
- echo WScript.Sleep 1000 > %temp%\tmp$.vbs
- cscript //nologo %temp%\tmp$.vbs
-
- for /f "tokens=2,3" %%i in ('netstat -e ^|findstr "Bytes"') do (
- set newrec=%%i
- set newsent=%%j
- )
-
- set /a rec=(%newrec%-%oldrec%)*8/1024
- set /a sent=(%newsent%-%oldsent%)*8/1024
-
- cls
- echo 下载流量:%rec% kbits
- echo.
- echo 上传流量:%sent% kbits
- set /a oldrec=newrec
- set /a oldsent=newsent
- goto :loop
复制代码
作者: DAIC 时间: 2014-8-19 15:51
打开命令行窗口,执行:
netstat -e
把结果发出来看看
作者: CrLf 时间: 2014-8-19 15:55
目测楼主系统下输出的 Bytes 是中文 字节
作者: easynet 时间: 2014-8-19 15:59
回复 2# DAIC
作者: CrLf 时间: 2014-8-19 16:05
回复 4# easynet
就知道是这样...把两处复制代码
改复制代码
作者: easynet 时间: 2014-8-19 16:15
回复 5# CrLf
不管用
作者: CrLf 时间: 2014-8-19 16:27
回复 6# easynet
那就试试- findstr /rc:"Bytes" /c:"字节"
复制代码
作者: Linuxer 时间: 2014-8-19 16:29
回复 5# CrLf
是不是不用加Bytes?复制代码
我这加Bytes执行没有结果。- C:\Windows\system32>netstat -e | findstr "Bytes 字节"
-
- C:\Windows\system32>
- C:\Windows\system32>
- C:\Windows\system32>netstat -e | findstr "字节"
- 字节 4209033302 91175807
-
- C:\Windows\system32>
复制代码
作者: CrLf 时间: 2014-8-19 16:30
回复 8# Linuxer
findstr 处理中文经常要用 /r 开关,算是个缺陷吧
作者: Linuxer 时间: 2014-8-19 16:34
回复 9# CrLf
加r,是模糊匹配,不加r是精确匹配,是不是这样理解?
作者: Linuxer 时间: 2014-8-19 16:38
回复 6# easynet
就用复制代码
查询好了,简单一点。
作者: CrLf 时间: 2014-8-19 17:00
回复 10# Linuxer
见 findstr /?,其实 findstr 默认就是正则匹配,我也不知道为什么中文字符还要加 /r (印象中有人说有时候可以用 /l) 才能正确匹配到
作者: easynet 时间: 2014-8-21 22:04
回复 11# Linuxer
能显示了,谢谢啊。但是为什么显示的流量与实际用的流量不相符?
作者: easynet 时间: 2014-8-21 22:07
回复 3# CrLf
改成“findstr "字节"”后就能显示了,谢谢啊。但是为什么显示的流量与实际用的流量不相符?
作者: Linuxer 时间: 2014-8-21 22:13
回复 14# easynet - set newrec=%%i/1024
- set newsent=%%j/1024
复制代码
这样试试。
作者: easynet 时间: 2014-8-21 22:48
回复 15# Linuxer
不行,成负数了。
作者: apang 时间: 2014-8-21 22:59
回复 8# Linuxer
C:\Windows\System32>set /a 4209033302
无效数字。数字精确度限为 32 位。
作者: Linuxer 时间: 2014-8-22 10:20
回复 16# easynet
嗯,是不对的,昨天理解错了。
我也没搞明白为什么不一致。查资料也没查出有用的信息。
作者: apang 时间: 2014-8-22 13:22
- @echo off
- MODE con: COLS=22 LINES=10
-
- for /f "tokens=2,3" %%i in ('netstat -e ^|findstr /i "Bytes 字节"') do (
- set rec=%%i
- set sent=%%j
- )
-
- :loop
- echo WScript.Sleep 1000 > "%temp%\tmp$.vbs"
- cscript //nologo "%temp%\tmp$.vbs"
- cls
-
- (for /f "tokens=2,3" %%i in ('netstat -e ^|findstr /i "Bytes 字节"') do (
- echo res=FormatNumber((%%i-%rec%^)*8/1024, 2, true^)
- echo sent=FormatNumber((%%j-%sent%^)*8/1024, 2, true^)
- echo WScript.Echo "下载流量:" ^& res ^& " kbits"
- echo WScript.Echo ""
- echo WScript.Echo "上传流量:" ^& sent ^& " kbits"
- set rec=%%i
- set sent=%%j
- )) > "%temp%\tmp$.vbs"
-
- cscript //nologo "%temp%\tmp$.vbs"
-
- goto :loop
复制代码
作者: hnldwhm52 时间: 2014-9-11 23:37
xuexixiexie!!
作者: hnldwhm52 时间: 2014-9-11 23:49
xuexixiexie!!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |