标题: [文本处理] 批处理如何按照IP提取后面内容并且自动分类? [打印本页]
作者: q120072949 时间: 2011-1-22 12:16 标题: 批处理如何按照IP提取后面内容并且自动分类?
有文本内容如下:
max.txt
192.168.12.12:00-00-00-00-00-02
192.168.1.1:00-00-00-00-00-01
192.168.23.13:00-00-00-00-00-03
192.168.111.222:00-00-00-00-00-05
192.168.45.67:00-00-00-00-00-04
............
IP后面的“:”是中文状态的:,不是英文输入法的:
后面的MAC地址格式都是00-00-00-00-00-00
第一个批处理:
文本里的IP是乱的,我想运行一段批处理代码后,能够按照IP顺序来排列
新生成一个文本 mac-2.txt
192.168.1.1:
192.168.1.111:
192.168.2.1:
192.168.22.111
...........
第二个批处理
按照IP第三位分别把不同的IP写入不同的TXT,TXT名字就为mac+IP第三位.txt
如:mac1.txt里都是192.168.1.x:00-00-00-00-00-00
mac2.txt里都是192.168.2.x:00-00-00-00-00-00
第三位IP有多少种,就生成多少个这样的TXT
请教高手,这样的2个批处理代码如何写?
[ 本帖最后由 q120072949 于 2011-1-22 17:03 编辑 ]
作者: hanyeguxing 时间: 2011-1-22 14:55
1:- sort max.txt /o max-2.txt
复制代码
2:- @echo off
- for /f "tokens=1-4 delims=." %%a in (max.txt) do >>max%%c.txt echo %%a.%%b.%%c.%%d
复制代码
作者: hanyeguxing 时间: 2011-1-22 16:21
如果要完全重新排序:- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1-5 delims=.:" %%a in (max.txt) do set a=00%%a&set b=00%%b&set c=00%%c&set d=00%%d&set "#!a:~-3! !b:~-3! !c:~-3! !d:~-3!:%%e=="
- (for /f "tokens=1-5 delims==#:" %%a in ('set #') do (
- set b=
- call:a %%a
- echo !b!:%%b
- ))>max-2.txt
- exit
- :a
- set a=%1
- if %a:~0,2%==00 set a=%a:~2%
- if %a% neq 0 if %a:~0,1%==0 set a=%a:~1%
- if defined b (set b=!b!.%a%) else set b=%a%
- shift
- if not "%1"=="" goto:a
复制代码
[ 本帖最后由 hanyeguxing 于 2011-1-22 16:25 编辑 ]
作者: q120072949 时间: 2011-1-26 18:15
孤星的代码很强大啊!几个问题都解决了
还有个小小的问题就是2楼的第二段代码:- @echo off
- for /f "tokens=1-4 delims=." %%a in (max.txt) do >>max%%c.txt echo %%a.%%b.%%c.%%d
复制代码
运行后产生的若干个文本里的MAC地址没有按照第三位IP的顺序排列,是乱的啊,
能否再帮我优化下呢,若干个文本生成时顺便排序下
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |