中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 改IP的批处理有几点不懂 上一主题 | 下一主题
jiecy
初级用户





积分 27
发帖 9
注册 2007-5-29
状态 离线
『楼 主』:  改IP的批处理有几点不懂

for /f "tokens=12 delims= " %%i in ('ipconfig /all^|find /i "Physical Address"') do (
   set mac=%%i
   set mac=!mac:~0,-1!
   )

第一行的 ipconfig /all^ 后边跟个 ^ 是什么意思?
第二行已经得到了MAC地址,为什么第三行要写个 !mac:~0,-1 ,是不是得到的MAC最后边有个空格,把那个空格去掉?


for /f "tokens=1-3 delims==|" %%j in (MAC.INI) do (
   set mac_=%%j
   set ip_=%%k
   set sm_=%%l
   if !mac! equ !mac_! (
      call :set_ !mac_! !ip_! !sm_!  
      set /a no_+=1
      )   
   )
tokens=1-3是什么意思?
delims==用一个=就够了,为什么用两个?
MAC.INI为什么不用空格分隔?这样岂不简单?
%%K和%%L是哪里来的?
!MAC!EQV !MAC_!是什么意思?
CALL :set_ !mac_! !ip_! !sm_!  什么意思?

[ Last edited by jiecy on 2007-6-1 at 09:23 AM ]

2007-6-1 08:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

参考下面两个链接:

http://www.cn-dos.net/forum/viewthread.php?tid=25746

http://www.cn-dos.net/forum/viewthread.php?tid=19331

2007-6-1 12:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ttyp
初级用户





积分 180
发帖 84
注册 2006-9-7
状态 离线
『第 3 楼』:  

^是转义字符,特殊需要转义,比如|是DOS里的管道命令,但是要输出|字符时,需要转义,用^|来表示

!mac:~0,-1!

两个!扩起来的是在使用延迟变量时的定义,:~start,end,是字符串操作,此句表示截取mac的从第1个字符到最后一个字符

具体可以搜索延迟变量和查看set /?命令

2007-6-1 14:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

//tokens=1-3是什么意思?
取第一列、第二列、第三列

//%%K和%%L是哪里来的?
从for循环的第一行可以看出%%j代表第一列,所以%%k代表第二列,%%l代表第三列,%%m代表第四列,依此类推。

2007-6-1 19:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  

//delims==用一个=就够了,为什么用两个?
也许是作者笔误,也许在MAC.INI文件中确实是以=|作为列分隔符的。打开MAC.INI文件一看便知。

2007-6-1 20:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: