[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
是因为 for 是一次性收集数据,然后再处理。所以 for 一直在等待 windump.exe 进程结束。如果你把进程 windump.exe 结束了,你的代码(1)就能看到结果。

TOP

-c
Exit after receiving count packets.

用这个参数可以退出 windump.exe。可以做一个循环:
  1. @echo off
  2. :Loop
  3. for /f "tokens=2 delims= " %%i in ('windump -c 10') do echo %%i
  4. goto Loop
复制代码

[ 本帖最后由 tmplinshi 于 2010-12-22 23:51 编辑 ]

TOP

  1. @echo off
  2. :Begin
  3. SetLocal
  4. set WinDump.log_LastSize=0
  5. start /b WinDump.exe >WinDump.log
  6. :Loop
  7. :: 设置循环分析 WinDump.log 的间隔时间。单位是秒,请修改 -n 后面的数字。
  8. >nul Ping 127.1 -n 5
  9. :: 检测 WinDump.log 的大小来判断是否抓到了新数据,没有新数据就继续等待。
  10. for %%a in (WinDump.log) do (
  11.     if %%~za equ %WinDump.log_LastSize% goto Loop
  12.     set WinDump.log_LastSize=%%~za
  13. )
  14. :: 用 for 直接读取 WinDump.log,会提示找不到文件。。所以改用“type WinDump.log”。
  15. for /f "%skip% tokens=2" %%a in ('type WinDump.log') do (
  16.     rem 下面这句不要删了,是用于计算下一次分析 WinDump.log 要略过的行数。
  17.     set /a Skip_Num += 1
  18.     echo %%a
  19. )
  20. :: WinDump.log 文件会不断增大,文件过大处理起来会比较吃力的吧。
  21. :: 而且由于在计算 Skip_Num,而批处理能计算的最大数是 2147483647,再加 1 就等于 -2147483648 了。
  22. :: 所以,最好设定一个行数,当大于这个行数时重启 WinDump.exe 并清空 WinDump.log。
  23. if %Skip_Num% gtr 100000 goto Restart
  24. set skip=skip=%Skip_Num%
  25. goto Loop
  26. :Restart
  27. EndLocal
  28. taskkill /f /im WinDump.exe
  29. goto Begin
复制代码
1

评分人数

TOP

返回列表