中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教 批处理对 字符的运算及排列---高手进
作者:
标题: 请教 批处理对 字符的运算及排列---高手进 上一主题 | 下一主题
lovef7
初级用户





积分 28
发帖 12
注册 2007-4-9
状态 离线
『楼 主』:  请教 批处理对 字符的运算及排列---高手进

大家好  我有个问题
   一直在网上找  精通批处理教程  可是找到的都是一个内容 没有很详细的 所以我对这个问题 不知道怎么搞了


事情是这样的  我有一个 文本 面有这样的内容
:(
ABC.TXT

机器号=5
WksIP=192.168.0.5
MAC=001D0F200C29
...............
...............

WksIP=192.168.0.236
MAC=001D0F21B5E6

  下面还有很多
  然后 这个里面 的   IP并不是 实际IP  实际IP 是那个IP+1
上面的 实际是    192.168.0.6   
  还有 那个MAC  要转换成 00-1D-0F-20-0C-29  这个样子

然后 把上面两个 组合 成  192.168.0.6   00-1D-0F-20-0C-29  存放到一个 文本文件中(IP-MAC.TXT)

我写了这个

ZHU.TXT


for /f "tokens=2 delims==" %%i in ('find /i "WksIP" ABC.TXT) do echo %%i>>ip.txt
for /f "tokens=2 delims==" %%m in ('find /i "mac" ABC.TXT) do (
   set mac=%%m&&call :ccc

)
echo %ip% %mac% >>IP-MACl.txt

pause
:ccc
for /f "tokens=* delims=" %%p in (ip.txt) do (
    set ip=%%p
)



程序最后 只写入了 最后一个 的

IP-MAC.TXT

192.168.0.235    001D0F21B5E6


那个  001D0F21B5E6   转换成  00-1D-0F-21-B5-E6
实在是不知道搞  不过看了 SET的参数 里面 /A的 可以运算
  看哪位高手能帮下忙吗
??



                        可以的话可以发 邮件给我
                                                       QQ:43413161     网中瘤虫

2007-10-30 12:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jack123147
初级用户





积分 52
发帖 20
注册 2007-10-25
状态 离线
『第 2 楼』:  

:ccc
set  a=0
set  /a ip+=1
for /f "tokens=*  delims="  %%i in (ip.txt)  do   echo !ip!=%%p
   没测试过,不知道可以不

2007-10-30 12:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lovef7
初级用户





积分 28
发帖 12
注册 2007-4-9
状态 离线
『第 3 楼』:  

恩  先谢谢你了
   我测试下

2007-10-30 13:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 4 楼』:  


@echo off
for /f "tokens=1,2,3,4,5 delims==." %%a in (t.txt) do (
  if /i "%%a"=="WksIP" call :ip %%b %%c %%d %%e
  if /i "%%a"=="MAC" call :mac "%%b"
)
pause
goto :eof

:ip
set ip=%4
set /a ip+=1
echo wksIP=%1.%2.%3.%ip%
goto :eof

:mac
set mac1=
set mac=%~1
:loop
set mac1=%mac1%-%mac:~0,2%
set mac=%mac:~2%
if not "%mac%"=="" goto loop
echo MAC=%mac1:~1%
goto :eof


2007-10-30 13:59
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
lovef7
初级用户





积分 28
发帖 12
注册 2007-4-9
状态 离线
『第 5 楼』:  

不行```` 等待高手

2007-10-30 14:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 6 楼』:  



  Quote:
WksIP=192.168.0.5
MAC=001D0F200C29
WksIP=192.168.0.236
MAC=001D0F21B5E6

我测试的结果是

  Quote:
wksIP=192.168.0.6
MAC=00-1D-0F-20-0C-29
wksIP=192.168.0.237
MAC=00-1D-0F-21-B5-E6

难道不对吗??

2007-10-30 14:07
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
lovef7
初级用户





积分 28
发帖 12
注册 2007-4-9
状态 离线
『第 7 楼』:  

回复的时候 来了为兄弟
      我再测试下

2007-10-30 14:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 8 楼』:  

哦,知道了,是IP和MAC要在同一行,是吧?

2007-10-30 14:09
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
lovef7
初级用户





积分 28
发帖 12
注册 2007-4-9
状态 离线
『第 9 楼』:  

4 楼的兄弟 不好意思  你的我在测试     非常感谢你

2007-10-30 14:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lovef7
初级用户





积分 28
发帖 12
注册 2007-4-9
状态 离线
『第 10 楼』:  

恩 是要同一行  其实 我就是要  做成  MAC-IP 绑定  就是 防止ARP 的
    兄弟你有  QQ 吗  我加你


                 交流下

2007-10-30 14:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 11 楼』:  


@echo off
for /f "tokens=1,2,3,4,5 delims==." %%a in (t.txt) do (
  if /i "%%a"=="WksIP" call :ip %%b %%c %%d %%e
  if /i "%%a"=="MAC" call :mac "%%b"&call echo %%ip%%    %%mac1:~1%%
)
pause
goto :eof

:ip
set ip=%4
set /a ip+=1
set "ip=%1.%2.%3.%ip%"
goto :eof

:mac
set mac1=
set mac=%~1
:loop
set mac1=%mac1%-%mac:~0,2%
set mac=%mac:~2%
if not "%mac%"=="" goto loop
goto :eof


2007-10-30 14:12
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: