Board logo

标题: 改IP的批处理有几点不懂 [打印本页]

作者: jiecy     时间: 2007-6-1 08:47    标题: 改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 ]
作者: lxmxn     时间: 2007-6-1 12:34
参考下面两个链接:

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

http://www.cn-dos.net/forum/viewthread.php?tid=19331
作者: ttyp     时间: 2007-6-1 14:39
^是转义字符,特殊需要转义,比如|是DOS里的管道命令,但是要输出|字符时,需要转义,用^|来表示

!mac:~0,-1!

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

具体可以搜索延迟变量和查看set /?命令
作者: HAT     时间: 2007-6-1 19:57
//tokens=1-3是什么意思?
取第一列、第二列、第三列

//%%K和%%L是哪里来的?
从for循环的第一行可以看出%%j代表第一列,所以%%k代表第二列,%%l代表第三列,%%m代表第四列,依此类推。
作者: HAT     时间: 2007-6-1 20:00
//delims==用一个=就够了,为什么用两个?
也许是作者笔误,也许在MAC.INI文件中确实是以=|作为列分隔符的。打开MAC.INI文件一看便知。