中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 18:09
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » 关于"for"的另类理解(个人意见)
可打印版本  1,275 / 6
第1楼 bat-zw 发表于 2008-03-11 12:08
金牌会员 发帖 1,276 积分 3,105
关于"for"的另类理解(个人意见)
  关于DOS中至强命令FOR的理解,各位前辈们已有了详细的分析,在此本人就“不班门弄斧孔门作文比欠盖茨面前比钞票了”,只是发表一下本人对其的另类理解。一般DOS命令都只是单次执行,下面以ping为例进行下说明:
ping/n 10 127.1/此命令就是对本地网卡一次拼测10下,就好比是一个人去做一件有10道程序的事情。如加入for:
for /l %%a in (1,1,10) do ping/n 10 127.1/就变成了反复拼测10次(每次拼10下),就好比是一个人10次去做同一件有10道程序的事。
又如下面这段命令:
ping 192.168.1.1 -n 10
ping 192.168.1.2 -n 10
ping 192.168.1.3 -n 10
........................
ping 192.168.1.10 -n 10
是表示对192.168.1网段内尾数为1至10内的ip依次进行拼测10下,就如同一个人一次去做一组有10件每件有10道程序的事。加入for后:
for /l %%a in (1,1,10) do ping 192.168.1.%a%/就如同叫10个人来做这组事,每人依次负责一件有10道程序的事。
再如下面的这段命令:
ping 192.168.0.1 -n 10
ping 192.168.0.2 -n 10
........................
ping 192.168.0.n -n 10
ping 192.168.1.1 -n 10
ping 192.168.1.2 -n 10
........................
ping 192.168.1.10 -n 10
就是对192.168.0网段和192.168.1网段内尾数在1至10内的每个ip分别拼测10下,这如同叫一个人去做两组每组都有10件每件有10道程序的事,加入for:
for /l %%a in (0,1,1) do (
for / %%b in (1,1,10) do (
ping 192.168.%a%.%b% -n 10
)
)
这就变成了叫两组人每组10个来分开做这两组事,每人依次负责一件有10道程序的事。
以上纯属个人理解,我过往说之,大家也就过往听之了,只要不拍砖就好了,呵呵。
:-)

 

[ Last edited by zw19750516 on 2008-3-11 at 08:23 PM ]
第2楼 woo88 发表于 2008-03-11 13:01
初级用户 发帖 96 积分 188
不错
第3楼 terse 发表于 2008-03-11 13:34
银牌会员 发帖 946 积分 2,404
Originally posted by zw19750516 at 2008-3-11 12:08:
  关于DOS中至强命令FOR的理解,....
for /l %%a in (0,1,1) do (
for / %%b in (1,1,10) do (
ping 192.168.%a%.%b% -n 10
)
) ......

这里是否是这样的?
for /l %%a in (0,1,1) do (
for /l %%b in (1,1,10) do (
ping 192.168.%%a.%%b -n 10
)
)
pause

理解你前面的 也可以这样的嘛!
for /l %%a in (0,1,1) do (
for /l %%b in (1,1,10) do (
for /l %%c in (1,1,10) do (
ping 192.168.%%a.%%b
)
)
)
pause

[ Last edited by terse on 2008-3-11 at 01:42 PM ]
第4楼 huahua0919 发表于 2008-03-11 14:07
银牌会员 发帖 780 积分 1,608
不仅仅是for命令,一般循环语句在没有内部跳转符的时候,都是按照先里后外的执行顺序执行的!

以上代码同样执行100次!
第5楼 HAT 发表于 2008-03-11 14:14
版主 发帖 5,017 积分 9,023
讲得很清楚,不过没看出另类的地方:)
第6楼 bat-zw 发表于 2008-03-12 03:04
金牌会员 发帖 1,276 积分 3,105
这样理解还不是另类啊,起码是另一类理解方法了吧,呵呵
第7楼 ansipeter 发表于 2008-03-12 11:55
中级用户 发帖 130 积分 269
只是很普通的FOR语句的嵌套使用,好像不是太过分的另类理解吧?呵呵

而且还可以这样玩

@echo off
for /l %%a in (1,1,50) do (
for /l %%b in (1,1,%%a) do set/p a=#<nul
echo.
)

[ Last edited by ansipeter on 2008-3-12 at 12:03 PM ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023