![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 19:39 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 改IP的批处理有几点不懂 |
| 可打印版本 818 / 4 |
| 第1楼 jiecy | 发表于 2007-06-01 08:47 |
| 初级用户 发帖 9 积分 27 | |
|
改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 ] |
|
| 第2楼 lxmxn | 发表于 2007-06-01 12:34 |
| 版主 发帖 4,938 积分 11,386 | |
| 第3楼 ttyp | 发表于 2007-06-01 14:39 |
| 初级用户 发帖 84 积分 180 | |
|
^是转义字符,特殊需要转义,比如|是DOS里的管道命令,但是要输出|字符时,需要转义,用^|来表示
!mac:~0,-1! 两个!扩起来的是在使用延迟变量时的定义,:~start,end,是字符串操作,此句表示截取mac的从第1个字符到最后一个字符 具体可以搜索延迟变量和查看set /?命令 |
|
| 第4楼 HAT | 发表于 2007-06-01 19:57 |
| 版主 发帖 5,017 积分 9,023 | |
|
//tokens=1-3是什么意思?
取第一列、第二列、第三列 //%%K和%%L是哪里来的? 从for循环的第一行可以看出%%j代表第一列,所以%%k代表第二列,%%l代表第三列,%%m代表第四列,依此类推。 |
|
| 第5楼 HAT | 发表于 2007-06-01 20:00 |
| 版主 发帖 5,017 积分 9,023 | |
|
//delims==用一个=就够了,为什么用两个?
也许是作者笔误,也许在MAC.INI文件中确实是以=|作为列分隔符的。打开MAC.INI文件一看便知。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |