|
|
本帖最后由 pcl_test 于 2016-11-5 13:08 编辑
a.txt文本内容为:
162.244.13.82:3128
222.200.3.31:8909
212.100.253.31:8909
…………
想得到如下效果(包含上述IP的小IP段范围,最后去重复)
162.244.8.0 162.244.18.255
222.200.0.0 222.200.8.255
212.100.248.0 212.100.255.255
其中 8=13-5,18=13+5.(5为自己输入,如果出现小于0,或者大于255,则改为0,或者255)
我编写的代码如下,但是“如果出现小于0,或者大于255,则改为0,或者255”不知道如何写?请大家帮忙。- @echo off&setlocal enabledelayedexpansion
- set /p z=请输入加减量:
- for /f "delims=. tokens=1-3" %%a in ('type ip.txt') do (
- set /a x=%%c-z
- set /a y=%%c+z
- echo %%a.%%b.!x!.0 %%a.%%b.!y!.255>>tmp.txt
- )
- (for /f "delims=" %%i in (tmp.txt) do (
- if not defined "%%i" echo %%i&set ""%%i"=i"
- ))>IPrangge+port.txt
- del /q tmp.txt
- exit
复制代码 之前看过这个http://www.bathome.net/thread-5427-1-1.html 批处理字符替换:在小于10的数字前面补零
但是他的字符串用,隔开的,默认为多个字符,用for %%b in (%%a) do 就搞定了,但是我这个不行。
希望大家帮帮忙,最好是运行速度比较快点。(我之前想过先将.替换为,再用上面这个帖子的方法,但是觉得肯定费时间,不是上策)
O(∩_∩)O谢谢 |
评分
-
查看全部评分
|