中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » For 循环得不到想要的结果,该怎么办!!!
作者:
标题: For 循环得不到想要的结果,该怎么办!!! 上一主题 | 下一主题
XinStar
初级用户





积分 30
发帖 11
注册 2007-6-30
状态 离线
『楼 主』:  For 循环得不到想要的结果,该怎么办!!!

Online.ini文件内容如下:
ZjjHs1.3322.Org                5500
ZjjHs2.3322.Org                6500

有如下语句:
For /f "Tokens=1" %%h in (Online.ini) Do For /f "Tokens=8" %%i in ('Tracert %%h') do For /f "Tokens=4" %%j in ('Netstat -n -p tcp ^| FindStr /ir "%%i"') do If Not "%%l"=="ESTABLISHED" Goto NoLink

:NoLink
Cls
Color 7c
Echo.&Echo.
Echo             连接失败!请检查网络或通知远程协助人员...  
Goto End

若第一个服务器可连接,而第二个服务器无法连接,程序还是会跳转到NoLink去;

想要达到的效果:
当第一个服务器无法连接时,尝试第二个服务器,如果第二个服务器也无法连接则跳转到NoLink上;
当第一个服务器可以连接时,直接跳出For循环语句,不再测试连接第二个服务器.

忘高手指点...

[ Last edited by XinStar on 2008-3-15 at 02:11 AM ]

2008-3-15 00:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

用一条嵌套这么多层的for语句来实现这个功能,似乎是有点过于复杂了,程序写来一方面是实现某个功能,另一方面就是让人来看的。所以,无论从哪个解决来说,这个for语句都有点儿过于复杂。总之,算法还是有问题。建议楼主认真考虑一下测试一个服务器能否连接的算法是不是可以简化一些。

for语句对文件的每一行是循环执行的,其执行中间除非使用了goto这一类的语句转到别的位置,否则每一行都要执行一次同样的操作,所以,你可以考虑在那个语句中将goto nolink改为goto havelink。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-3-15 11:12
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
XinStar
初级用户





积分 30
发帖 11
注册 2007-6-30
状态 离线
『第 3 楼』:  

谢谢Climbing兄,我正在想办法把语句写的更简化些!!!
但就是不知道能不能达到效果,,,挻郁闷的!!!

非常感谢你哈!!!

[ Last edited by XinStar on 2008-3-15 at 03:54 PM ]

2008-3-15 13:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: