|
kevinm
新手上路
积分 14
发帖 10
注册 2009-12-1
状态 离线
|
『楼 主』:
看不懂这段不断ping对方的代码
@echo off&setlocal enabledelayedexpansion
set "#0=在线"&set "#1=离线"
:lp
set /a _0=0,_1=0
for /l %%a in (1,1,2) do (
ping /n 1 http://www.baidu.com/>nul
set /a _!errorlevel!+=1
)
for %%a in (0 1) do if !_%%a! equ 2 set "str=!#%%a!:%time%"&goto next
goto lp
:next
echo %str%&goto lp
哪位高手能详细解释下
|
|
2009-12-5 14:38 |
|
|
junyee
中级用户
积分 253
发帖 112
注册 2006-5-31
状态 离线
|
『第
2 楼』:
我来试一下,不过我表达能力不够强,估计你直接看代码比看我解释都强 !-_-!
@echo off&setlocal enabledelayedexpansion
REM 清除回显并启用变量延迟扩展
set "#0=在线"&set "#1=离线"
REM 设置两个字符串变量
:lp
REM 循环标志
set /a _0=0,_1=0
REM 设置两个变量_0;_1的初始值为0
for /l %%a in (1,1,2) do (
REM 连续运行两次括号内的命令
ping /n 1 http://www.baidu.com/>nul
REM PING www.baidu.com 一次,并不显示所有信息
set /a _!errorlevel!+=1
REM 根据PING的返回码(拼成功为0,不成功为1),设置_0或_1的值为原来值+1
)
for %%a in (0 1) do if !_%%a! equ 2 set "str=!#%%a!:%time%"&goto next
REM 分别判断变量 _0 和 _1的值,如果为2 则把对应的字符串(内容为#0/#1+:+系统时间)发送到变量str ,并跳转到标签 :next
goto lp
如果_0或_1变量值不为2,则直接跳回标签 :lp
:next
REM 仅由上一个for跳转到这里
echo %str%&goto lp
显示 变量str的值,并继续跳到循环 :lp
————————————————————
综上
此BAT的作用是:
连续PING两次www.baidu.com,如果PING得通则会把 变量 _0设置为2,_1为0,反之把 变量_1设置为2,_0为0.
分别判断_0和_1的值
如果_0为2,则显示在线:%TIME%,并继续循环,
如果_1为2,则显示离线:%TIME%,并继续循环。
|
|
2009-12-7 21:41 |
|
|
kevinm
新手上路
积分 14
发帖 10
注册 2009-12-1
状态 离线
|
『第
3 楼』:
懂了 讲解的非常详细
非常感谢!!!
|
|
2009-12-9 14:35 |
|
|
kevinm
新手上路
积分 14
发帖 10
注册 2009-12-1
状态 离线
|
『第
4 楼』:
但是又有新的问题了
这段代码不管用啊
不管对方在不在线,都是一样的结果(我在局域网内试了好几个IP了)
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
为啥呢?是代码本身不足还是别的原因?希望高手指点
[ Last edited by kevinm on 2009-12-9 at 15:00 ]
|
|
2009-12-9 14:58 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2009-12-10 14:53 |
|
|
kevinm
新手上路
积分 14
发帖 10
注册 2009-12-1
状态 离线
|
『第
6 楼』:
@echo off&setlocal enabledelayedexpansion
set "#0=在线"&set "#1=离线"
:lp
set /a _0=0,_1=0
for /l %%a in (1,1,2) do (
ping /n 1 http://www.baidu.com/>nul
set /a _!errorlevel!+=1
)
for %%a in (0 1) do if !_%%a! equ 2 set "str=!#%%a!:%time%"&goto next
goto lp
:next
echo %str%&goto lp
上面就是代码 ,就是1楼的代码啊
出错提示:
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
已经达到最大的 setlocal 递归层。
你测试没问题???我的咋有问题啊!!!请指点!!!
|
|
2009-12-11 16:42 |
|