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

[文本处理] 批处理如何按照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 编辑 ]

孤星的代码很强大啊!几个问题都解决了
还有个小小的问题就是2楼的第二段代码:
  1. @echo off
  2. for /f "tokens=1-4 delims=." %%a in (max.txt) do >>max%%c.txt echo %%a.%%b.%%c.%%d
复制代码
运行后产生的若干个文本里的MAC地址没有按照第三位IP的顺序排列,是乱的啊,
能否再帮我优化下呢,若干个文本生成时顺便排序下

TOP

如果要完全重新排序:
  1. @echo off&setlocal enabledelayedexpansion
  2. 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=="
  3. (for /f "tokens=1-5 delims==#:" %%a in ('set #') do (
  4.         set b=
  5.         call:a %%a
  6.         echo !b!:%%b
  7. ))>max-2.txt
  8. exit
  9. :a
  10. set a=%1
  11. if %a:~0,2%==00 set a=%a:~2%
  12. if %a% neq 0 if %a:~0,1%==0 set a=%a:~1%
  13. if defined b (set b=!b!.%a%) else set b=%a%
  14. shift
  15. if not "%1"=="" goto:a
复制代码

[ 本帖最后由 hanyeguxing 于 2011-1-22 16:25 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

1:
  1. sort max.txt /o max-2.txt
复制代码
2:
  1. @echo off
  2. for /f "tokens=1-4 delims=." %%a in (max.txt) do >>max%%c.txt echo %%a.%%b.%%c.%%d
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表