服务器老是停电或断电 高速运转的硬盘极容易损坏,接了UPS,如果没有懂得的人去关机也是摆设,所以需要用软件在UPS提供的珍贵电量的几分钟内实现自动关机。
批处理版本:(不支持2008)
@echo off
title 服务器断网自动关机
MODE con: COLS=50 LINES=10
color 4a
echo 准备检测网络……
ping 127.0.0.1 -n 4
CLS
:go1
set /a miao=85
rem MIXO的值为计算余下时间而设,注意总时间等于该值减1。余下时间=(miao-1)*(ndiao-1)
set /a ndiao = 6
rem ndiao的值为重新检测网络倒计时而设定,也影响到自关机时间,注意显示的值等于该值减1
:go2
set mac=
set /a miao=%miao%-1
if "%miao%"=="0" GOTO reboot
for /f "tokens=14*" %%i in ('ipconfig/all^|find "Enabled"') do (
set mac=%%i
goto FOR1)
:FOR1
@echo off & setlocal enableextensions
echo WScript.Sleep 1000 > %temp%\tmp$.vbs
set /a i = %ndiao%
rem i的值为计算余下时间而设,余下时间=(miao-1)*(ndiao-1)
set /a miao2=%miao%*(ndiao-1)
rem miao2为自动关机的余下时间=(miao-1)*(ndiao-1)
:Timeout
if %i% == 1 goto Next
setlocal
set /a i = %i% - 1
cls
echo . 服务器无人守值,断网自动关机
echo .
if "%mac%" == "" (echo . 网络连接不正常,系统将在%miao2%秒后自动关机) ELSE (
echo . 网络连接正常)
echo .
echo . %i% 秒后重新检测网络
echo .
ECHO .
ECHO .
cscript //nologo %temp%\tmp$.vbs
goto Timeout
:Next
cls & echo.
for %%f in (%temp%\tmp$.vbs) do del %%f
if "%mac%" == "" (goto go2) else (goto go1)
:reboot
echo %date% %time% "服务器检测到网络不通60秒后关机" >>errlog.log
shutdown -s -f -t 60 -c "服务器检测到网络不通60秒后关机"
cls
echo %date% %time% "服务器检测到网络不通15秒后关机"
echo 关机60秒倒数计时中,可按任意键取消!
pause >nul
shutdown -a
exit