标题: 改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文件一看便知。