![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 02:23 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 关于FOR变量问题?望赐教。 |
| 可打印版本 1,251 / 6 |
| 第1楼 xg911335 | 发表于 2006-09-17 07:12 |
| 初级用户 发帖 50 积分 134 | |
|
关于FOR变量问题?望赐教。 for /f "tokens=2" %%I in (1.txt) do set IP=%%I
for /f "tokens=3" %%M in (1.txt) do set Mac=%%M arp -s %ip% %Mac% 1。txt的内容如下: 0 192.168.0.201 00:0A:EB:2F:34:44 lan 1 192.168.0.198 00:14:85:81:BF:E9 lan 2 192.168.0.196 00:14:85:81:B9:F6 lan 3 192.168.0.195 00:14:85:BD:CF:B7 lan 问题来了。为什么只能帮定最后一个呢? |
|
| 第2楼 mountvol | 发表于 2006-09-17 08:06 |
| 初级用户 发帖 117 积分 186 | |
|
在命令行中运行,如果写成批处理把%i和%j改成%%i,%%j |
|
| 第3楼 namejm | 发表于 2006-09-17 10:21 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
如果想对所有的IP都进行绑定的话,可以用下面的代码,楼上的少了些部分:
|
|
| 第4楼 xg911335 | 发表于 2006-09-18 01:49 |
| 初级用户 发帖 50 积分 134 | |
|
想问一下,我这么写问题出在那里呢?
|
|
| 第5楼 namejm | 发表于 2006-09-18 02:25 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by xg911335 at 2006-9-18 01:49: 因为for语句是循环语句,它的基本格式是 for %%i in (set) do (command),执行时的特点就是:如果在command部分没有跳转语句的话,它会对set中的内容逐一执行command中的动作,直到set中的内容被执行完之后,才会跳到下一句继续执行。所以,你用for语句读取1.txt的时候,只有等到读取完1.txt的最后一行内容,才会执行下一句,也就是说 %%i 的值为1.txt最后一行内容的时候才执行下一条语句。 |
|
| 第6楼 pengfei | 发表于 2006-09-18 02:56 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
看来楼主还是没有理解循环命令的含义哦! 修改代码如下:
for /f "tokens=2" %%i in (1.txt) do ( for /f "tokens=3" %%m in (1.txt) do ( arp -s %%i %%m ) arp -s %%i %%m 这一句应该放到整个循环中. 而你那段是等for执行完了以后再执行绑定, 这样变量只是最后一个提取到的数值.所以只能绑定最后一个ip啦! [ Last edited by pengfei on 2006-9-18 at 03:12 ] |
|
| 第7楼 xg911335 | 发表于 2006-09-19 03:34 |
| 初级用户 发帖 50 积分 134 | |
|
谢谢个位赐教,我开始明白了.
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |