中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]SYBC配合ECHO 降低开发难度 网络检测脚本进度条版
作者:
标题: [原创]SYBC配合ECHO 降低开发难度 网络检测脚本进度条版 上一主题 | 下一主题
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『楼 主』:  [原创]SYBC配合ECHO 降低开发难度 网络检测脚本进度条版

总是有人说俺的代码看不懂,汗,看来还需要更详细的解释才行.
本例中:
先利用echo在屏幕上显示提示信息
然后利用类似 SYBC 10000$f1#### 的命令给指定位置的字符上色
还使用到了DEBUG滚屏功能(标签 :GP)

最终做出了不错的进度条效果和扩展效果
当然这个脚本还没有写完,
由于还没有使用并行脚本,进度条暂时只是浪费时间
对于网络故障的处理意见也还没有写进去

8.8.8.8和8.8.4.4是谷歌的DNS地址,大家可以拿去应急
代码更新在2楼,
截图一:是进度条走到一半的中途的样子.
截图二:是正常的网络连接的最终的样子.

[ Last edited by sl543001 on 2010-5-12 at 17:11 ]

附件 1: wljc.GIF (2010-5-12 15:01, 12.23 K,下载次数: 1)


附件 2: wljc2.GIF (2010-5-12 15:09, 15.48 K,下载次数: 1)




SYBNQQ:354324773
2010-5-12 15:01
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『第 2 楼』:  


@echo oFF&SETLOCAL ENABLEDELAYEDEXPANSION&(CHCP 437 &GRAFTABL 936&mode con cols=80 lines=25)>NUL&goto :head::
::SYBN 网络检测工具
::用于检测和诊断网络连接
::SYBN V0.1 2010-5-12
::QQ354324773
::本工具处于开发阶段。部分功能尚未开发,请等待更新版本。
:voidmain
title SYBN 网络检测工具 QQ:354324773 单击鼠标以开始..
sybc m
title SYBN 网络检测工具 QQ:354324773 检测中..
cls
set hs=0
echo   ◎SYBN 网络检测工具 QQ:354324773  ╗  您当前的网络状况:
echo ╔═════════════════╝
echo ╚◎测试回环  检查IP/TCP协议状态  ⊕╗      部分功能尚未开发,请等待更新版本。
echo ╔═════════════════╝
echo ╚◎测试网卡  检查网线和网络设备  ⊕╗
echo ╔═════════════════╝
echo ╚◎测试网关  检查网关连通性      ⊕╗
echo ╔═════════════════╝
echo ╚◎测试外网  检查网关有效性      ⊕╗
echo ╔═════════════════╝
echo ╚◎测试DNS   检查DNS 连通性      ⊕╗
echo ╔═════════════════╝
echo ╚◎测试域名  检查DNS 有效性      ⊕╗
echo ╔═════════════════╝
echo ╚◎本工具处于开发阶段。尚开发未完成
::改变各栏目条颜色
sybc 10002$72##$7C####$71##############$7d##############$0A##
for /l %%a in (2,2,12) do (
        set /a BSWZ=10002+%%a00
        sybc !BSWZ!$80##################################
)
sybc 11402$8A##################################
call :BX %hs%
for /l %%a in (1,1,6) do (
        set /a hs=hs+2,hss=hs
        ::进度条逐个改变hs位置颜色
        call :BS
        set pingerr=0
        ::调用测试模块N(:XX%%a)
        call :XX%%a
        ::如果全部链接失败则跳转到相应的解决发难
        if !errorlevel! == 0 call :noXX %%a
        ::一次性改变hs位置颜色
        call :BH !hss!
        ::改变hs位置的管道线的颜色
        call :BX
)
set /a hs=hs+2
        call :BS
        call :BH !hs!
goto :voidmain
:noxx
title 问题%1
set err=%1
call :BH %hss% no
SYBC 10244$0C问题代码%1,$03详细情形请等待更新版本.
pause>NUL
exit

:XX1
call :lj 127.0.0.1
EXIT /B %pingerr%
:XX2
for /f "tokens=15" %%a in ('ipconfig ^|find "IP Address"') do (
        call :lj %%a
        goto :XX3_2
)
set xs=本地地址 $8C获取失败! no
call :XS %xs%
EXIT /B %pingerr%
:XX3
for /f "tokens=13" %%a in ('ipconfig ^|find "Gateway"') do (
        call :lj %%a
        goto :XX3_2
)
set xs=网关地址 $8C获取失败! no
call :XS %xs%
:XX3_2
EXIT /B %pingerr%
:XX4
call :lj 8.8.8.8
call :lj 8.8.4.4
EXIT /B %pingerr%
:XX5
for /f "tokens=15" %%a in ('ipconfig /all^|find "DNS Servers"') do (
        call :lj %%a
        goto :XX3_2
)
set xs=DNS地址 $8C获取失败! no
call :XS %xs%
EXIT /B %pingerr%
:XX6
call :lj www.baidu.com
call :lj www.google.com
call :lj www.net.cn
call :lj www.cn-dos.net
EXIT /B %pingerr%
:lj
::连接参数所指定地址,返回"IP:延迟",如不通则返回"连接失败!"
call :ping %1
set err=!errorlevel!
set /a pingerr=pingerr+err
set xs=链接:%1 延迟:!err!ms
if !err! == 0 set xs=链接:%1 $8C连接失败! no
call :XS %xs%
goto :EOF
:ping
::ping参数所指定地址,并返回网络延迟,如不通则返回0
for /f "tokens=1,2,3,4,5,6" %%a in ('ping %1 -n 1^|find " time"') do if not "%%e" == "" (set ptime=%%e&&goto :ping2)
set ptime=time=0ms
:ping2
set ptime=%ptime:~5,99%
EXIT /B %ptime:~0,-2%
:GP
set /a GP1=hs+1,GP2=hs+2
::移动某一行%hs%起的所有内容到另一行%2
(echo mb800:%%XSHC%GP1%%% fa0 b800:%%XSHC%GP2%%%&echo q)|debug>NUL
set /a hs=hs+1
set /a BSWZ=10000+%hs%00
if "%1" == "no" (
        sybc !BSWZ!$07  $80                                  $07║
) else (
        sybc !BSWZ!$07  $80                                  $0A║
)
goto :EOF
:XS
::插入一行,并显示指定文字
call :GP %3
set /a BSWZ=%hs%00+10002
sybc !BSWZ!$8f%1
set /a BSWZ=%hs%00+10024
sybc !BSWZ!$8f%2
goto :EOF
:BX
::改变hs位置的管道线的颜色
set /a BSWZ=%hs%00+10120
sybc !BSWZ!$0A##################
set /a BSWZ=%hs%00+10100
sybc !BSWZ!$0A####################;##
goto :EOF
:BH
::一次性改变hs位置颜色
set /a BSWZ=%100+10002
if "%2" == "no" (
        sybc !BSWZ!$C0##################################
) else (
        sybc !BSWZ!$A1##################################$0A##
)
goto :EOF
:BS
::进度条逐个改变hs位置颜色
for /l %%a in (0,2,32) do (
        set /a BSWZ=%hs%00+10002+%%a
        sybc !BSWZ!$70##
        cd >nul
)
goto :EOF
:head
::载入/生成sybc1.1.43 变量SYBCOM保存SYBC的16进制数据 SYBCV保存DEBUG代码 将这两个变量的值交由DEBUG执行时可以从内存读取SYBCS变量做参数在内存运行SYBC.COM
SET SYBCOM=A100``80BE BA00 0 88AC ACC4 88AC 80C3 FC`3674 FC80 BEFF 82 4B75 2CBE AC00 C488`86AC 50C4 BE1F 0 3CAC 7553 ACFB 593C`F675 3CAC 7542 ACF1 433C EC75 3CAC 7553`ACE7 3D3C E275 1DEB 1B3 8EE9 B300 E902`89 3CAC 743A 3C0E 740D 3C5B 7400 8357`1EE 83E9 AC00 313C 1874 4A3C DA74 4B3C`DB74 4D3C 4474 6A3C CE74 6B3C CF74 6D3C`3874 D6E8 E800 F0 183C 2A7F C688 CAE8`E800 E4 4F3C 1E7F C288 2B0 E2F6 B050`F6A0 5FE6 C701 AC57 243C 374 EE83 E801`74 D188 38EB 4CB4 21CD B8 CD00 B833`1 33CD 5B8 CD00 A933 3 F174 3B8`CD00 8933 B3C8 F608 EBF3 B0DB CD00 8016`2FB D274 E088 CEEB 815F A0C7 5700 B850`B800 750 295A 88F5 ACCA 243C B174 3B3C`1174 D3C 5174 3C 4D74 233C 875 D783`EB01 E904 FF3C 80AA FA 574 D088 EBAA`83D8 1D7 D3EB 32E8 3C00 7523 8008 23FB`375 B2 38C3 74D8 87F9 3CC3 7E39 402`8009 39FB 37E C380 2409 800F FE3 10B2`E2F6 D800 C288 B4C3 CD4C AC21 203C FB74`D3C F374 3C EF74 C388 3CAC 7420 3CEC`740D 3CE4 7400 C3E0 C387 302C EB80 B430`F60A E4 C3D8``
SET SYBCV=`A80`DB FF``RCX`200`G`Q
::以下2行是SYBC.com生成代码,可以生成SYBC.com文件
SET V=`RCX`200`N SYBC.COM`W`Q
(ECHO.%SYBCOM:`=&ECHO.DW %&ECHO.%V:`=&ECHO.%)|DEBUG>NUL
::保存显示缓存各行地址16进制值
set XSHC=0=`1=A`2=14`3=1E`4=28`5=32`6=3C`7=46`8=50`9=5A`10=64`11=6E`12=78`13=82`14=8C`15=96`16=A0`17=AA`18=B4`19=BE`20=C8`21=D2`22=DC`23=E6`24=F0
set XSHC%XSHC:`=0&set XSHC%
echo SYBN 网络检测工具 QQ:354324773
::利用DEBUG开启25*80显示模式
(echo.Q)|debug>NUL
::延时0.5秒,确保转换到25*80显示模式
ping 543001 -n 1 -w 40 >NUL
goto :voidmain
[ Last edited by sl543001 on 2010-5-13 at 08:36 ]



SYBNQQ:354324773
2010-5-12 15:01
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复
sl543001
中级用户




积分 499
发帖 225
注册 2008-12-30
状态 离线
『第 3 楼』:  

由于代码中出现了大量的##############
所以更新SYBC的新语法,测试中...



SYBNQQ:354324773
2010-5-13 08:35
查看资料  发送邮件  发短消息 网志  OICQ (354324773)  编辑帖子  回复  引用回复

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


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



论坛跳转: