宽带连接工具[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