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

牛人,有必要嵌套这个程度吗,汗
  1. for /f "usebackq tokens=1,2,3*" %%i in (Result.txt) do (
  2. echo %%i >>%%j.txt
  3. )
复制代码
1

评分人数

    • CrLf: 耐心,乐于助人PB + 7 技术 + 1

TOP

回复 4# wh1234567


    不知道你那是什么情况,Result.txt是临时?还是每个%%j.txt是临时文件

TOP

本帖最后由 ivor 于 2012-2-8 21:48 编辑

回复 6# wh1234567
  1. for /f "tokens=1,2,3*" %%i in (Result.txt) do (
  2. if "%%j" NEQ "" if "%%~xj" EQU "" echo %%i >>%%j.txt
  3. )
  4. REM del Result.txt
复制代码
生成的临时文件,已经知道原因,Time文件跟我这个代码应该没有关系吧。那两个类型的临时文件不会产生。但不保证其他的问题发生,因为你的情况我也不完全了解
最后一句注释掉了,前面如果正常则可以去掉注释

TOP

本帖最后由 ivor 于 2012-2-9 14:00 编辑

回复 8# wh1234567
  1. @echo off
  2. set duankouhao=1,2,3402,4,5,26,7,8,9
  3. for %%a in (%duankouhao%) do (
  4. set %%a=ivor
  5. )
  6. for /f "tokens=1,2,3*" %%i in (Result.txt) do (
  7.         if defined %%j if not defined %%i if "%%j" NEQ "" if "%%~xj" EQU "" (
  8. set %%i=.
  9. set /a ivor%%j+=1
  10. echo %%i)>>%%j.txt
  11. )
  12. for /f "tokens=1,2delims==" %%a in ('set ivor') do (
  13. set var=%%a
  14. call echo %%var:~4%% 端口记录了总共%%b个
  15. )
  16. pause
  17. REM del Result.txt
复制代码
要自己多学习,不能老问别人哦。楼主挖的一手好坑,你还有要求吗?

TOP

本帖最后由 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行的

TOP

本帖最后由 ivor 于 2012-2-9 14:18 编辑

回复 12# wh1234567
  1. @echo off
  2. set duankouhao=8080,3389,80,23,20
  3. for %%a in (%duankouhao%) do (
  4.         set prefix%%a=.
  5. )
  6. for /f "tokens=1,2,3*" %%i in (Result.txt) do (
  7.         if defined prefix%%j if "%%j" NEQ "" if "%%~xj" EQU "" (
  8.                
  9.                 set /a ivor%%j+=1
  10.                 echo %%i)>>%%j.txt
  11. )
  12. for /f "tokens=1,2delims==" %%a in ('set ivor') do (
  13.         set var=%%a & set /a count+=1
  14.         call echo %%var:~4%% 端口记录了总共 %%b 个
  15. )
  16. echo 总计有 %count%个端口号
  17. pause
复制代码
去除重复的功能以去掉,因为检查IP重复是不正确的,可能一个IP会开放多个端口,加的功能越多程序会越慢,如果真要监测重复的IPand端口,可以验证每个%%i(IP)%%j(端口),在这我就不加了。
修改了会可能会生成TIME文件的代码,你不发出来结果,我还真不相信,程序会生成TIME文件⊙﹏⊙b汗

TOP

你的问题总是层出不穷,我应付不过来了,你还是想好了,总结一下再发新帖吧,然后把你的样本记得上传。


ivor 没定义,是因为result.txt没有数据

TOP

本帖最后由 ivor 于 2012-2-9 19:25 编辑

回复 17# wh1234567
  1. @echo off
  2. set /p duankouhao=请输入端口号
  3. echo %duankouhao% | find "-" && goto :Proc
  4. for %%a in (%duankouhao%) do (
  5.         set prefix%%a=.
  6. )
  7. for /f "tokens=1,2,3*" %%i in (Result.txt) do (
  8.         if not defined %%i%%j if defined prefix%%j if "%%j" NEQ "" if "%%~xj" EQU "" (
  9. set %%i%%j=.
  10.                 set /a ivor%%j+=1
  11.                 echo %%i)>>%%j.txt
  12. )
  13. for /f "tokens=1,2delims==" %%a in ('set ivor') do (
  14.         set var=%%a & set /a count+=1
  15.         call echo %%var:~4%% 端口记录了总共 %%b 个
  16. )
  17. echo 总计有 %count%个端口号
  18. pause & exit
  19. :Proc
  20. for /f "tokens=1,2 delims=-" %%a in ("%duankouhao%") do (
  21. set min=%%a & set max=%%b
  22. )
  23. for /f "tokens=1,2,3*" %%i in (Result.txt) do (
  24.         if not defined %%i%%j if %%j LEQ %max% if %%j GEQ %min% if "%%j" NEQ "" if "%%~xj" EQU "" (
  25.                 set %%i%%j=.
  26.                 set /a ivor%%j+=1
  27.                 echo %%i)>>%%j.txt
  28. )
  29. for /f "tokens=1,2delims==" %%a in ('set ivor') do (
  30.         set var=%%a & set /a count+=1
  31.         call echo %%var:~4%% 端口记录了总共 %%b 个
  32. )
  33. echo 总计有 %count%个端口号
  34. pause & exit
复制代码
支持范围选择,支持用(为空格、逗号、跳格或等号)分开端口号,支持过滤相同端口号重复IP
新功能不再提供,程序如果有BUG,可以反馈
1

评分人数

    • wh1234567: 高手,真正实现了完美要求,再次感谢热心耐 ...技术 + 1

TOP

返回列表