admin管理员组文章数量:1625796
更新
若能直接通过网页登录Dr,可以尝试抛弃客户端,使用 多平台自动登录校园网drcom 实现类似的功能。
前言
学校的网络经常断,Dr客户端经常断网恢复后无法自动重连,故写了个脚本判断当网络出错时重启Dr。
脚本文件
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~0"" h",0)(window.close)&&exit
:begin
set ip=www.baidu.com
set /a counter=0
set /a counter_max=10
:p
timeout /nobreak /t 60 >nul
curl -m 1 -sSfI %ip% > nul
if %errorlevel% EQU 0 (set /a counter=0 & echo Network Available) else (set /a counter+=1 & echo Network Connect Failed)
if %counter% GEQ %counter_max% (taskkill /F /T /im DrMain.exe & timeout /nobreak /t 5 >nul & start /d "C:\Drcom\DrUpdateClient\" DrMain.exe & timeout /nobreak /t 300 >nul) else (echo Failed for %counter%/%counter_max%)
GOTO p
使用方式
使用方法
将上述代码保存成auto_reboot_drcom.bat
文件,双击启动即可。
也可将其放置在C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
目录下,使其开机自动启动。
期间可能会导致杀毒软件报错,允许操作即可。
脚本解读
第一段的作用是让脚本获取管理员权限,我从网上抄的,不解释。
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
第二段是让脚本后台运行,若不想让其后台运行,可以删除这三行。
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~0"" h",0)(window.close)&&exit
:begin
第三段设置三个参数后开始循环:
- ip:用于检查网络连接的ip地址或域名
- counter: 错误计数器初始值
- counter_max: 错误计数器最大值
set ip=www.baidu
set /a counter=0
set /a counter_max=5
循环从:p
开始到GOTO p
结束。
这句的作用是延时60秒,使得每分钟进行一次网络检查。
timeout /nobreak /t 60 >nul
使用 curl 检查网络,若网络连接失败则进行一次计数(counter)若网络连接正常则将计数归零。
curl -m 1 -sSfI %ip% > nul
if %errorlevel% EQU 0 (set /a counter=0 & echo Network Available) else (set /a counter+=1 & echo Network Connect Failed)
本来打算用 ping 来检查网络的, 但是我这的网络设置不允许ping。
ping %IP% -n 1 -w 1000 | find "TTL" >nul
if %errorlevel% EQU 1 (set /a counter+=1 & echo Network Connect Failed) else (set /a counter=0 & echo Network Available)
当计数(counter)大于等于计数上限(counter_max)时,结束DrMain.exe
及其子进程,5秒后再启动DrMain.exe
,启动后等待300秒(5分钟)(为了保证启动成功)再开始下一个循环。
if %counter% GEQ %counter_max% (taskkill /F /T /im DrMain.exe & timeout /nobreak /t 5 >nul & start /d "C:\Drcom\DrUpdateClient\" DrMain.exe & timeout /nobreak /t 300 >nul) else (echo Failed for %counter%/%counter_max%)
如此一来,当脚本启动时,每60秒检查一次网络,若连续检查了10次都没网,即网络持续中断了10分钟,就会执行重启Dr,若网络还没恢复,则每过6(5+1)分钟重启一次Dr。
版权声明:本文标题:Windows网络无连接自动重启Dr.com 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728933253a1180478.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论