标题: [文本处理] [已解决]批处理文件怎样实现端口扫描结果整理? [打印本页]
作者: wh1234567 时间: 2012-2-8 17:21 标题: [已解决]批处理文件怎样实现端口扫描结果整理?
原代码:- for /f "usebackq tokens=1,2,3*" %%i in (Result.txt) do (
- if 1433==%%j (
- echo %%i>>1433.txt
- ) else (
- if 80==%%j (
- echo %%i>>80.txt
- ) else (
- if 79==%%j (
- echo %%i>>79.txt
- ) else (
- if 53==%%j (
- echo %%i>>53.txt
- ) else (
- if 21==%%j (
- echo %%i>>21.txt
- ) else (
- if 23==%%j (
- echo %%i>>23.txt
- ) else (
- if 135==%%j (
- echo %%i>>135.txt
- ) else (
- if 139==%%j (
- echo %%i>>139.txt
- ) else (
- if 445==%%j (
- echo %%i>>445.txt
- ) else (
- if 2967==%%j (
- echo %%i>>2967.txt
- ) else (
- if 161==%%j (
- echo %%i>>161.txt
- ) else (
- if 160==%%j (
- echo %%i>>160.txt
- ) else (
- if 9431==%%j (
- echo %%i>>9431.txt
- ) else (
- if 8383==%%j (
- echo %%i>>8383.txt
- ) else (
- if 3306==%%j (
- echo %%i>>3306.txt
- )
- )
- )
- )
- )
- )
- )
- )
- )
- )
- )
- )
- )
- )
- )
- )
复制代码
如何修改成以扫描到的端口分别以端口号为文件名输出?也就是无需设置具体输出的端口号
作者: ivor 时间: 2012-2-8 17:55
本帖最后由 ivor 于 2012-2-8 19:27 编辑
牛人,有必要嵌套这个程度吗,汗- for /f "usebackq tokens=1,2,3*" %%i in (Result.txt) do (
- echo %%i >>%%j.txt
- )
复制代码
作者: wh1234567 时间: 2012-2-8 19:14
本帖最后由 wh1234567 于 2012-2-8 20:31 编辑
回复 2# ivor
老兄,好像不行,能不能将处理时产生的临时文件一并删除?
作者: wh1234567 时间: 2012-2-8 20:36
回复 2# ivor
能不能将处理时产生的临时文件一并删除?
作者: ivor 时间: 2012-2-8 20:43
回复 4# wh1234567
不知道你那是什么情况,Result.txt是临时?还是每个%%j.txt是临时文件
作者: wh1234567 时间: 2012-2-8 21:04 标题: ,
回复 5# ivor
能不能去除重复行,并将处理时产生的临时文件一并删除?
作者: ivor 时间: 2012-2-8 21:46
本帖最后由 ivor 于 2012-2-8 21:48 编辑
回复 6# wh1234567 - for /f "tokens=1,2,3*" %%i in (Result.txt) do (
- if "%%j" NEQ "" if "%%~xj" EQU "" echo %%i >>%%j.txt
- )
- REM del Result.txt
复制代码
生成的临时文件,已经知道原因,Time文件跟我这个代码应该没有关系吧。那两个类型的临时文件不会产生。但不保证其他的问题发生,因为你的情况我也不完全了解
最后一句注释掉了,前面如果正常则可以去掉注释
作者: wh1234567 时间: 2012-2-8 22:07
本帖最后由 wh1234567 于 2012-2-8 23:35 编辑
回复 7# ivor
第一个问题:
这次正常了,
输出的文本能不能分别去除重复行,最后在批处理界面上显示多少个端口,分别是哪些端口号?
第二个问题:
另外如果想将原代码精简一下的话,如何设定指定输出的多个端口号?例如:
set duankouhao=1,2,3402,4,5,26,7,8,9
代码该如何修改?
作者: ivor 时间: 2012-2-8 23:13
本帖最后由 ivor 于 2012-2-9 14:00 编辑
回复 8# wh1234567 - @echo off
- set duankouhao=1,2,3402,4,5,26,7,8,9
- for %%a in (%duankouhao%) do (
- set %%a=ivor
- )
- for /f "tokens=1,2,3*" %%i in (Result.txt) do (
-
- if defined %%j if not defined %%i if "%%j" NEQ "" if "%%~xj" EQU "" (
- set %%i=.
- set /a ivor%%j+=1
- echo %%i)>>%%j.txt
- )
- for /f "tokens=1,2delims==" %%a in ('set ivor') do (
- set var=%%a
- call echo %%var:~4%% 端口记录了总共%%b个
-
- )
- pause
- REM del Result.txt
复制代码
要自己多学习,不能老问别人哦。楼主挖的一手好坑,你还有要求吗?
作者: wh1234567 时间: 2012-2-8 23:47
本帖最后由 wh1234567 于 2012-2-9 06:05 编辑
回复 9# ivor
这个和第一个问题以及第二个问题都不太相符,并且不能删除临时文件以及分别去除输出文本里的重复ip;端口号总数其实也就是以端口号为文件名输出的文本个数;在批处理界面上显示每个端口号分别是多少个ip即可。
第一个问题以及第二个问题可能得分别2个批处理
作者: ivor 时间: 2012-2-9 00:03
本帖最后由 ivor 于 2012-2-9 00:07 编辑
1.功能去除重复IP 2.根据duankouhao变量控制输出端口结果 3.最后显示指定端口总数量
代码精简啊,难,你的功能越要求越复杂。为了测试这个批处理的运行速度,我专门建了一个2W行的不重复IP的文件,搞得我电脑蓝屏,可能是溢出了问题签名:
问题事件名称: BlueScreen
OS 版本: 6.1.7601.2.1.0.256.1
区域设置 ID: 2052
哎 ,O__O"… 速度倒是还可以啊,千万别执行上W行的
作者: wh1234567 时间: 2012-2-9 11:54
回复 11# ivor
非常感谢您的帮忙,9楼的代码能不能修正一下,有些小错误和不能删除临时文件,增加一个端口共计多少个也就是以端口号为文件名输出的文本个数。
另外 set duankouhao=1,2,3402,4,5,26,7,8,9 是属于第二个问题也就是指定输出多个端口号为文件名的文本,第一个问题不需要这个代码
作者: ivor 时间: 2012-2-9 14:16
本帖最后由 ivor 于 2012-2-9 14:18 编辑
回复 12# wh1234567 - @echo off
- set duankouhao=8080,3389,80,23,20
- for %%a in (%duankouhao%) do (
- set prefix%%a=.
- )
- for /f "tokens=1,2,3*" %%i in (Result.txt) do (
-
- if defined prefix%%j if "%%j" NEQ "" if "%%~xj" EQU "" (
-
- set /a ivor%%j+=1
- echo %%i)>>%%j.txt
- )
- for /f "tokens=1,2delims==" %%a in ('set ivor') do (
- set var=%%a & set /a count+=1
- call echo %%var:~4%% 端口记录了总共 %%b 个
-
- )
- echo 总计有 %count%个端口号
- pause
复制代码
去除重复的功能以去掉,因为检查IP重复是不正确的,可能一个IP会开放多个端口,加的功能越多程序会越慢,如果真要监测重复的IPand端口,可以验证每个%%i(IP)%%j(端口),在这我就不加了。
修改了会可能会生成TIME文件的代码,你不发出来结果,我还真不相信,程序会生成TIME文件⊙﹏⊙b汗
作者: wh1234567 时间: 2012-2-9 14:38
本帖最后由 wh1234567 于 2012-2-9 15:26 编辑
回复 13# ivor
大有进步
环境变量 ivor 没有定义
总计有 个端口号
请按任意键继续. . .
21-26这种格式能不能支持也就是21到26?既支持21,22,23,26 也支持21-26这种格式
并且要求分别以端口号命名输出,
作者: ivor 时间: 2012-2-9 15:16
你的问题总是层出不穷,我应付不过来了,你还是想好了,总结一下再发新帖吧,然后把你的样本记得上传。
ivor 没定义,是因为result.txt没有数据
作者: wh1234567 时间: 2012-2-9 15:23
本帖最后由 wh1234567 于 2012-2-9 18:00 编辑
回复 15# ivor
可能是set duankouhao= 这里的原因,如果set duankouhao= 21,22,23,25,26,正常显示,如果是set duankouhao= 21-26这样就不支持了,修正都支持就完美了,
输出时如果相应的端口号文本里没有本次ip就输出,有的话就无需再次重复输出,这样就不会出现每个相应的文本里有重复ip,可能你没有理解我说的去除重复ip的意思。在扫描的时候相同ip加相同端口会出现很多次,所以记录的是个数而不是次数
例如24.txt文本里有多个重复的,就需要去除重复。所以最好的办法是在输出时自动判断是否有重复
在这里小弟很感激
作者: wh1234567 时间: 2012-2-9 18:38
回复 15# ivor
能不能实现 set duankouhao=既支持21,22,23,26 也支持21-26这种格式
作者: ivor 时间: 2012-2-9 19:21
本帖最后由 ivor 于 2012-2-9 19:25 编辑
回复 17# wh1234567 - @echo off
- set /p duankouhao=请输入端口号
- echo %duankouhao% | find "-" && goto :Proc
-
- for %%a in (%duankouhao%) do (
- set prefix%%a=.
- )
-
- for /f "tokens=1,2,3*" %%i in (Result.txt) do (
-
- if not defined %%i%%j if defined prefix%%j if "%%j" NEQ "" if "%%~xj" EQU "" (
- set %%i%%j=.
- set /a ivor%%j+=1
- echo %%i)>>%%j.txt
- )
-
- for /f "tokens=1,2delims==" %%a in ('set ivor') do (
- set var=%%a & set /a count+=1
- call echo %%var:~4%% 端口记录了总共 %%b 个
-
- )
- echo 总计有 %count%个端口号
- pause & exit
-
- :Proc
- for /f "tokens=1,2 delims=-" %%a in ("%duankouhao%") do (
- set min=%%a & set max=%%b
-
- )
-
-
- for /f "tokens=1,2,3*" %%i in (Result.txt) do (
-
- if not defined %%i%%j if %%j LEQ %max% if %%j GEQ %min% if "%%j" NEQ "" if "%%~xj" EQU "" (
- set %%i%%j=.
- set /a ivor%%j+=1
- echo %%i)>>%%j.txt
- )
-
- for /f "tokens=1,2delims==" %%a in ('set ivor') do (
- set var=%%a & set /a count+=1
- call echo %%var:~4%% 端口记录了总共 %%b 个
-
- )
- echo 总计有 %count%个端口号
- pause & exit
复制代码
支持范围选择,支持用(为空格、逗号、跳格或等号)分开端口号,支持过滤相同端口号重复IP
新功能不再提供,程序如果有BUG,可以反馈
作者: wh1234567 时间: 2012-2-10 03:40
本帖最后由 wh1234567 于 2012-2-10 03:42 编辑
回复 7# ivor - for /f "tokens=1,2,3*" %%i in (Result.txt) do (
- if "%%j" NEQ "" if "%%~xj" EQU "" echo %%i >>%%j.txt
- )
- REM del Result.txt
复制代码
这个无需预设端口号的批处理也不错,只是需要增加在批处理界面上显示多少个端口,分别是哪些端口号的话就完美了,修正出现Time,这是第一个问题的批处理,还得劳驾修改一下,呵呵
作者: pdanniel66 时间: 2012-2-10 07:01
回复 17# wh1234567
Result.txt 事如何產生的 ?
可否提供原文件 (若檔案太大,建議提供 100-200 行)
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |