• 宽带连接工具[bat]


    宽带连接工具[bat]

    功能概述:
    本工具使用批处理编写,提供自动判断网络状态以决定断开或是连上网络,本月已用宽带时长,到月初自动清零。提供联网日志功能,可以记录下所有的连接或断开网络记录。如果连接失败,自动提示输入密码,特别适合每天要更换动态密码者使用。(windows系统可用)

    从功能上说,我不需要这个脚本,不过留下作为bat使用的参考。

    @echo off
    :retry
    ::窗口配置
    title 宽带连接工具
    mode con cols=50 lines=15 & color 02
    
    ::检查配置文件是否存在,否,则创建。
    if not exist netconfig.ini call:remd
    
    ::检查配置文件是否符合标准格式,否,则重新创建
    findstr . "netconfig.ini">nul && cls||call:remd
    Setlocal Enabledelayedexpansion
    set bbj1=[宽带连接名称:]
    set bbj3=[用户名:]
    set bbj5=[密码:]
    set bbj7=[本月已用宽带时长]
    set bbj9=[时间显示开关]
    set bbj11=[宽带时长显示开关]
    set bbj13=[上网时间记录开关]
    set bbj15=[上次使用时间]
    call:extxt
    
    ::读取配置信息
    Setlocal Enabledelayedexpansion
    set n=0
    For /f "delims=" %%2 in (netconfig.ini) do (
    Set /a n+=1 
    If !n!==2 set name=%%2
    If !n!==4 set user=%%2
    If !n!==6 set password=%%2
    If !n!==8 set netsc=%%2
    If !n!==10 set timekey=%%2
    If !n!==12 set netimky=%%2
    If !n!==14 set rizhiy=%%2
    If !n!==16 set oldtime=%%2
    If !n!==17 set olddate=%%2
    )
    
    ::判断月份差,清空宽带时长
    set/a "boldm=(1%olddate:~5,2%-100)"
    REM echo %boldm%
    set/a "bm=(1%date:~5,2%-100)"
    REM echo %bm%
    set/a "cmon=%bm%-%boldm%
    if not %cmon%==0 call:rewrite 8 000000
    rem echo %netsc%
    REM echo %cmon%
    ::对宽带时长进行变形
    set/a "bnewsc1=%netsc%/3600
    set/a "bnewsc2=%netsc%%%3600/60
    set/a "bnewsc3=%netsc%%%3600%%60
    set   "bnewsc=%bnewsc1%小时%bnewsc2%分%bnewsc3%秒
    rem echo %bnewsc% %bnewsc1% %bnewsc2% %bnewsc3%
    rem echo %name% %user% %password%
    
    
    call:clshow
    ::检测宽带状态自动判断连接或是断开
    ::断开,并判定结果
    rasdial|find "已连接">nul
    if %errorlevel%==0 (
    rasdial %name% /DISCONNECT
    if %errorlevel%==0 (
    echo 网络已成功断开!
    rem ping /n 2 127.1 >nul  
    call:wrizi 网络成功断开
    call:kdsclj
    call:rewrite 16 "%time%" 17 %date%
    rem ping /n 2 127.1 >nul 
    exit
    )
    if not %errorlevel%==0 (
    echo 网络断开失败!
    ping /n 10 127.1 >nul & exit
    )
    )
    
    
    ::连接,并判定,更改
    if %errorlevel%==1 (
      rasdial %name% %user% %password%
      rasdial|find "已连接">nul
      if !errorlevel!==0 (
      echo 网络已成功连接!
      call:wrizi 网络成功连接
      call:rewrite 16 "%time%" 17 %date%
      ping /n 2 127.1 >nul 
      exit
      )
      if not !errorlevel!==0 (
      call:clshow & color 0e
      echo 网络连接失败!
      echo -----------------------------
      echo 更改宽带连接名称,请输入#
      echo 更改账号,请输入*
      echo 更改密码,请直接输入密码
      set /p newpass=
      if !newpass!==* (
      echo 请输入账号:
      set /p newuser=
      call:rewrite 4 !newuser! & goto:retry 
      )
      if !newpass!==# (
      echo 请输入宽带连接名称:
      set /p newname=
      call:rewrite 2 !newname! & goto:retry 
      )
      if not !newpass!==* if not !newpass!==# (
      call:rewrite 6 !newpass! & goto:retry 
       )
      )
    )
     
    ::测试结尾
    rem echo 测试完成,按任意键退出。&pause>nul
    
    
    ::子程序
    
    
    ::清屏,重显
    :clshow
    cls
    echo 欢迎使用宽带连接工具!
    if %timekey%==1 echo 现在时间 %date% %time%
    echo 当前账号:%user%
    if %netimky%==1 echo 本月已用宽带时长:%bnewsc%
    goto:eof
    
    
    ::更改配置文件
    :rewrite
    Setlocal Enabledelayedexpansion
    set index=0
    for /f "delims=" %%i in (netconfig.ini) do (
     set /a index+=1
     set var!index!=%%i
    )
    set var%1=%2
    set var%3=%4
    (for /l %%i in (1 1 !index!) do echo !var%%i!)>netconfig.ini
    goto:eof
    
    
    ::重新创建配置文件
    :remd
    rem pause
    echo [宽带连接名称:]>"netconfig.ini"
    for %%1 in (
    宽带连接
    [用户名:]
    12345678910
    [密码:]
    123456
    [本月已用宽带时长]
    000000
    [时间显示开关]
    1
    [宽带时长显示开关]
    1
    [上网时间记录开关]
    0
    [上次使用时间]
    "%time%"
    %date%
    )do echo %%1>>"netconfig.ini"
    goto:retry
    rem echo 欢迎使用宽带连接工具!
    goto:eof
    
    
    ::检测配置是否合法,否则,重置
    :extxt
    set n=0
    Setlocal Enabledelayedexpansion
    For /f "delims=" %%i in (netconfig.ini) do (
    Set /a n+=1 
    set bb!n!=%%i
    rem echo bb!n!=%%i
    )
    for /l %%i in (1 2 15) do (
    rem if  !bb%%i! neq !bbj%%i! echo "!bb%%i!""!bbj%%i!"&pause>nul
    if  !bb%%i! neq !bbj%%i! call:remd 
    )
    goto:eof
    
    ::宽带计时累加(支持跨天)
    :kdsclj
    set/a "boldt=(1%olddate:~8,2%-100)*3600*24+(%oldtime:~1,2%)*3600+(1%oldtime:~4,2%-100)*60+(1%oldtime:~7,2%-100)"
    set/a "bt=(1%date:~8,2%-100)*3600*24+(%time:~0,2%)*3600+(1%time:~3,2%-100)*60+(1%time:~6,2%-100)"
    set/a "ctime=%bt%-%boldt%
    set/a "newsc=%netsc%+%ctime%
    call:rewrite 8 %newsc%
    goto:eof
    
    ::写入日志
    :wrizi
    if %rizhiy%==1 echo %date% %time%   %1 >> 网络连接日志.txt 
    for %%i in (网络连接日志.txt )do if %%~zi GTR 10485760 del "%%i"
    goto:eof
    
    >---

    转载自:https://www.cnblogs.com/pxyufeng/p/4159171.html

  • 相关阅读:
    BootstrapValidator 解决多属性被同时校验问题《转》
    SSRS 浮动表头设置
    ToString(string format)输出格式简述
    配置AutoMapper映射规则《转》
    IE浏览器上传图片预览兼容(IE 7 8 9 10 11)
    SQL : IN 和 Exists 的区别
    BitArray简单例子
    Rx.net 例子——(1)基础
    C# Pinvoke判断是UEFI模式还是BIOS模式
    wpf Route Event Code Snippet
  • 原文地址:https://www.cnblogs.com/guyk/p/11832293.html
Copyright © 2020-2023  润新知