[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样批量统计所有IP段的IP总数并将数据输出?

批处理咋样批量统计txt文本里所有IP段的IP总数并将数据输出?

例如文本1里有:
192.168.1.0 192.168.1.255
222.12.0.0 222.12.255.255
......

处理后并输出的文本2例如:

192.168.1.0 192.168.1.255    小计256个
222.12.0.0 222.12.255.255    小计65536个
......
------------------------------------------------
统计结果总数为:65792个

本帖最后由 batman 于 2011-7-1 07:46 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1-8 delims=. " %%a in (a.txt) do (
  3.   set /a "a=(%%e-%%a)*(2<<23)+(%%f-%%b)*(2<<15)+(%%g-%%c)*(2<<7)+%%h-%%d+1,num+=a
  4.   echo %%a.%%b.%%c.%%d %%e.%%f.%%g.%%h 小计!a!个
  5. )
  6. echo 统计结果总数为:!num!个)>$
  7. move $ a.txt&start a.txt
复制代码
***共同提高***

TOP

2# batman

很好,感谢版主,能不能在最后加个------------------------------------------------
每行的数据和最后总计结果用横线分开,这样比较直观

TOP

3# wh1234567

我还是保持沉默算了。。。
***共同提高***

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (    for /f "tokens=1-8 delims=. " %%a in (a.txt) do (
  4.         set /a "sumrow=(%%e-%%a)*(2<<23)+(%%f-%%b)*(2<<15)+(%%g-%%c)*(2<<7)+%%h-%%d+1"
  5.         set /a sumtotal+=sumrow
  6.         echo %%a.%%b.%%c.%%d %%e.%%f.%%g.%%h 小计!sumrow!个
  7.     )
  8.     echo ------------------------------------------------
  9.     echo 统计结果总数为:!sumtotal!个
  10. )>b.txt
复制代码

TOP

相当佩服楼主的是,看到set /a中的运算代码(我是故意写成这样子的)居然都没任何反应?而是着意于最后输出中没有一行-----(我也是故意没写的)。。。

伸手可以伸手成这个样子,倒是难为楼主了。。。
***共同提高***

TOP

相当佩服楼主的是,看到set /a中的运算代码(我是故意写成这样子的)居然都没任何反应?而是着意于最后输出中没有一行-----(我也是故意没写的)。。。

伸手可以伸手成这个样子,倒是难为楼主了。。。
batman 发表于 2011-7-1 12:20

在这里提问的大部分都是伸手党吧

TOP

7# Demon


这是事实,八过大部分人至少会自己解决一些非常简单的、可以模仿的东西,哪怕不懂原理,一些代码的作用猜也猜得出来

TOP

5# HAT


感谢网友,我也是和你一样添加了一段echo --------------------------------------------,但结果是在每行里都出现了分割线,哎

TOP

9# wh1234567


可能是超版的for循环写的太具迷惑性,你一不留神把echo写错了地方^_^

TOP

相当佩服楼主的是,看到set /a中的运算代码(我是故意写成这样子的)居然都没任何反应?而是着意于最后输出中没有一行-----(我也是故意没写的)。。。

伸手可以伸手成这个样子,倒是难为楼主了。。。
batman 发表于 2011-7-1 12:20

对俺这种水平的人,你写对写错根本分辨不出来,只知道输出的结果是否符合要求,目的达到了错的也认为是对的

我只会模仿,根本不懂代码含义

TOP

本帖最后由 wh1234567 于 2011-7-1 19:39 编辑

5# HAT
能不能将每行后面的结果都上下列对齐?
例如
2.2.2.2 2.2.2.22                                 小计21个
222.222.222.231 222.222.222.255      小计25个
......                                                  小计xxx个

TOP

借用超版的代码哈:
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set "Kg=                                               "
  3. (For /f "Tokens=1-8 Delims=. " %%a in (a.txt) do (
  4.   Set /a "a=(%%e-%%a)*(2<<23)+(%%f-%%b)*(2<<15)+(%%g-%%c)*(2<<7)+%%h-%%d+1,Num+=a
  5.   Set Str1=%%a.%%b.%%c.%%d%Kg%
  6.   Set Str2=%%e.%%f.%%g.%%h%Kg%
  7.   Echo !Str1:~,17!!Str2:~,17!小计!a!个                  
  8. )
  9. Echo -------------------------------------------------------------------------
  10. Echo 统计结果总数为:!Num!个)>$
  11. Move $ a.txt&Start a.txt
复制代码
一路飘过的鸟~~~

TOP

最大可以计算多少位数?我处理后总计结果显示为0,不知道为什么,可以计算上千亿吗?

TOP

批处理最大可以计算多少位数

TOP

返回列表