Board logo

标题: For 循环得不到想要的结果,该怎么办!!! [打印本页]

作者: XinStar     时间: 2008-3-15 00:53    标题: 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 ]
作者: Climbing     时间: 2008-3-15 11:12
用一条嵌套这么多层的for语句来实现这个功能,似乎是有点过于复杂了,程序写来一方面是实现某个功能,另一方面就是让人来看的。所以,无论从哪个解决来说,这个for语句都有点儿过于复杂。总之,算法还是有问题。建议楼主认真考虑一下测试一个服务器能否连接的算法是不是可以简化一些。

for语句对文件的每一行是循环执行的,其执行中间除非使用了goto这一类的语句转到别的位置,否则每一行都要执行一次同样的操作,所以,你可以考虑在那个语句中将goto nolink改为goto havelink。
作者: XinStar     时间: 2008-3-15 13:51
谢谢Climbing兄,我正在想办法把语句写的更简化些!!!
但就是不知道能不能达到效果,,,挻郁闷的!!!

非常感谢你哈!!!

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