我来试一下,不过我表达能力不够强,估计你直接看代码比看我解释都强 !-_-!
@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%,并继续循环。