找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33798|回复: 10

[代码合集] 批处理如何求和

[复制链接]
发表于 2014-9-24 14:59:42 | 显示全部楼层 |阅读模式
@echo off
:begin
set d=%date:~0,10%
set t=%time:~0,8%
set /p =" %d% %t% ,8000,close_wait,  " <nul >> D:\123.txt
netstat -aon -p tcp | find /i"8000" |find /i "close_wait" /c  >> D:\123.txt
set /p =" %d% %t% ,8000,time_wait,  " <nul >> D:\123.txt
netstat -aon -p tcp | find /i"8000" |find /i "time_wait" /c  >> D:\123.txt
set /p =" %d% %t% ,8000,established,  " <nul >> D:\123.txt
netstat -aon -p tcp | find /i"8000" |find /i "ESTABLISHED" /c  >> D:\123.txt
set /p =" %d% %t% ,9000,close_wait,  " <nul  >> D:\123.txt
netstat -aon -p tcp | find /i"9000" |find /i "close_wait" /c  >> D:\123.txt
set /p =" %d% %t% ,9000,time_wait,  " <nul  >> D:\123.txt
netstat -aon -p tcp | find /i"9000" |find /i "time_wait" /c  >> D:\123.txt
set /p =" %d% %t% ,9000,established,  " <nul >> D:\123.txt
netstat -aon -p tcp | find /i"9000" |find /i "ESTABLISHED" /c  >> D:\123.txt
echo.  >> D:\123.txt
echo --------------------------------------------------------------------- >> D:\123.txt
ping 127.1 /n 600 >nul
goto begin

输出结果是:
2014/09/24 14:30:23 ,8000,close_wait,  1
2014/09/24 14:30:23 ,8000,time_wait,  2
2014/09/24 14:30:23 ,8000,established,  3
2014/09/24 14:30:23 ,9000,close_wait,  1
2014/09/24 14:30:23 ,9000,time_wait,  1
2014/09/24 14:30:23 ,9000,established,  1
--------------------------------------------------------
如何才可以输出:
2014/09/24 14:30:23 ,8000,close_wait,  1
2014/09/24 14:30:23 ,8000,time_wait,  2
2014/09/24 14:30:23 ,8000,established,  3
2014/09/24 14:30:23 ,9000,close_wait,  1
2014/09/24 14:30:23 ,9000,time_wait,  1
2014/09/24 14:30:23 ,9000,established,  1

close_wait 2; time_wait 3; established 4
-------------------------------------------------------
发表于 2014-9-24 15:31:21 | 显示全部楼层
本帖最后由 DAIC 于 2014-9-27 11:50 编辑

@echo off
:begin
set d=%date:~0,10%
set t=%time:~0,8%
set /p =" %d% %t% ,8000,close_wait,  " <nul > D:\123.txt
netstat -aon -p tcp | find /i"8000" |find /i "close_wait" /c  >> D:\123.txt
set /p =" %d% %t% ,8000,time_wait,  " <nul >> D:\123.txt
netstat -aon -p tcp | find /i"8000" |find /i "time_wait" /c  >> D:\123.txt
set /p =" %d% %t% ,8000,established,  " <nul >> D:\123.txt
netstat -aon -p tcp | find /i"8000" |find /i "ESTABLISHED" /c  >> D:\123.txt
set /p =" %d% %t% ,9000,close_wait,  " <nul  >> D:\123.txt
netstat -aon -p tcp | find /i"9000" |find /i "close_wait" /c  >> D:\123.txt
set /p =" %d% %t% ,9000,time_wait,  " <nul  >> D:\123.txt
netstat -aon -p tcp | find /i"9000" |find /i "time_wait" /c  >> D:\123.txt
set /p =" %d% %t% ,9000,established,  " <nul >> D:\123.txt
netstat -aon -p tcp | find /i"9000" |find /i "ESTABLISHED" /c  >> D:\123.txt
echo.  >> D:\123.txt

>> D:\123.txt echo,
setlocal
set #close_wait=
set #time_wait=
set #established=
for /f "tokens=4,5 delims=, " %%i in (D:\123.txt) do (
    set /a #%%i+=%%j
)
for /f "tokens=1,2 delims=#=" %%i in ('set #') do (
    >> D:\123.txt set /p ="%%i %%j; " <nul
)
endlocal
>> D:\123.txt echo,


echo --------------------------------------------------------------------- >> D:\123.txt
type D:\123.txt >> D:\456.txt
ping 127.1 /n 600 >nul
goto begin
 楼主| 发表于 2014-9-24 16:28:51 | 显示全部楼层
大侠,貌似不行啊
 楼主| 发表于 2014-9-24 16:50:32 | 显示全部楼层
回复 2# DAIC


    大侠再帮分析下,按照你那样的写法,输出有错误哦 ,拜托
发表于 2014-9-24 17:44:36 | 显示全部楼层
a.txt改为d:\123.txt
发表于 2014-9-24 17:50:53 | 显示全部楼层
回复 4# yps851022


    已更改,你再试试。
发表于 2014-9-24 19:30:19 | 显示全部楼层
>> D:\123.txt 是错误的写法,>> 后应紧接文件路径
-------------------------------------
好像可以简化成这样:
  1. @echo off

  2. set d=%date:~0,10%
  3. set t=%time:~0,8%

  4. for /f "skip=4 tokens=3,5,6,7 delims=: " %%a in ('netstat -aon -p tcp') do (
  5.         set /a tcp[%%a][%%c]+=1,tcp[%%b][%%c]+=1,tcp[%%d][%%c]+=1
  6. )
  7. (for /f "tokens=2-4 delims=[]=" %%a in ('"set tcp[8000]&set tcp[9000]"') do (
  8.         echo  %d% %t% ,%%a,%%b,  %%c
  9. ))>>"D:\123.txt"

  10. pause
复制代码
 楼主| 发表于 2014-9-26 11:29:51 | 显示全部楼层
回复 6# DAIC


    大侠,再帮改改,下面是按照你是写法输出的结果,貌似是累计求和了哦

2014/09/26 11:25:09 ,8000,close_wait,  0
2014/09/26 11:25:09 ,8000,time_wait,  0
2014/09/26 11:25:09 ,8000,established,  0
2014/09/26 11:25:09 ,9000,close_wait,  0
2014/09/26 11:25:09 ,9000,time_wait,  0
2014/09/26 11:25:09 ,9000,established,  1
  

close_wait 0; established 1; time_wait 0;
---------------------------------------------------------------------
2014/09/26 11:26:09 ,8000,close_wait,  0
2014/09/26 11:26:09 ,8000,time_wait,  0
2014/09/26 11:26:09 ,8000,established,  0
2014/09/26 11:26:09 ,9000,close_wait,  0
2014/09/26 11:26:09 ,9000,time_wait,  0
2014/09/26 11:26:09 ,9000,established,  1
  

1; 0; close_wait 0; established 2; time_wait 0;
---------------------------------------------------------------------
2014/09/26 11:27:10 ,8000,close_wait,  0
2014/09/26 11:27:10 ,8000,time_wait,  0
2014/09/26 11:27:10 ,8000,established,  0
2014/09/26 11:27:10 ,9000,close_wait,  0
2014/09/26 11:27:10 ,9000,time_wait,  0
2014/09/26 11:27:10 ,9000,established,  1
  

0; 0; 1; 0; close_wait 0; established 3; time_wait 0;
---------------------------------------------------------------------

我想显示的是这个样子的:
2014/09/26 11:25:09 ,8000,close_wait,  0
2014/09/26 11:25:09 ,8000,time_wait,  0
2014/09/26 11:25:09 ,8000,established,  0
2014/09/26 11:25:09 ,9000,close_wait,  0
2014/09/26 11:25:09 ,9000,time_wait,  0
2014/09/26 11:25:09 ,9000,established,  1
  
close_wait 0; time_wait 0; established 1;
---------------------------------------------------------------------
2014/09/26 11:26:09 ,8000,close_wait,  0
2014/09/26 11:26:09 ,8000,time_wait,  0
2014/09/26 11:26:09 ,8000,established,  1
2014/09/26 11:26:09 ,9000,close_wait,  0
2014/09/26 11:26:09 ,9000,time_wait,  0
2014/09/26 11:26:09 ,9000,established,  1
  
close_wait 0; time_wait 0; established 2;
---------------------------------------------------------------------
2014/09/26 11:27:10 ,8000,close_wait,  0
2014/09/26 11:27:10 ,8000,time_wait,  0
2014/09/26 11:27:10 ,8000,established,  1
2014/09/26 11:27:10 ,9000,close_wait,  0
2014/09/26 11:27:10 ,9000,time_wait,  0
2014/09/26 11:27:10 ,9000,established,  0
  
close_wait 0; time_wait 0; established 1;
---------------------------------------------------------------------
发表于 2014-9-26 13:38:38 | 显示全部楼层
回复 8# yps851022


    第二次更新,你再试试。
 楼主| 发表于 2014-9-26 14:08:59 | 显示全部楼层
回复 9# DAIC

输出没有改变什么呀
还是这样的
2014/09/26 14:04:26 ,8000,close_wait,  0
2014/09/26 14:04:26 ,8000,time_wait,  0
2014/09/26 14:04:26 ,8000,established,  0
2014/09/26 14:04:26 ,9000,close_wait,  0
2014/09/26 14:04:26 ,9000,time_wait,  0
2014/09/26 14:04:26 ,9000,established,  1
  

close_wait 0; established 1; time_wait 0;
---------------------------------------------------------------------
2014/09/26 14:05:26 ,8000,close_wait,  0
2014/09/26 14:05:26 ,8000,time_wait,  0
2014/09/26 14:05:26 ,8000,established,  0
2014/09/26 14:05:26 ,9000,close_wait,  0
2014/09/26 14:05:26 ,9000,time_wait,  0
2014/09/26 14:05:26 ,9000,established,  1
  

1; 0; close_wait 0; established 2; time_wait 0;
---------------------------------------------------------------------
2014/09/26 14:06:27 ,8000,close_wait,  0
2014/09/26 14:06:27 ,8000,time_wait,  0
2014/09/26 14:06:27 ,8000,established,  0
2014/09/26 14:06:27 ,9000,close_wait,  0
2014/09/26 14:06:27 ,9000,time_wait,  0
2014/09/26 14:06:27 ,9000,established,  1
  

0; 0; 1; 0; close_wait 0; established 3; time_wait 0;
-------------------------------------------------------
发表于 2014-9-27 11:51:27 | 显示全部楼层
回复 10# yps851022


    第三次修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 23:12 , Processed in 0.032709 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表