使用if else条件检查上次重启时间的批处理脚本

时间:2013-05-07 01:59:36

标签: if-statement batch-file

我希望从我的服务器获取一些细节,例如使用批处理文件的上次重启时间。 我正在使用命令

systeminfo | findstr“时间:”

获取服务器的当前运行时间

现在我的问题是我想比较当前的正常运行时间与计算机的日期和时间,并确保它显示“成功”如果重新启动少于15天,否则“警报”如果不在15天内重新启动

1 个答案:

答案 0 :(得分:1)

有一些方法可以将MM/DD/YYYY日期格式转换为Julian日期。如果您这样做,可以从now中减去boot以找到difference

http://www.dostips.com/DtTipsDateTime.php

调整Date2JDate公式,我能够获得服务器启动的日期和今天的日期;并计算经过的天数:

@echo off
SETLOCAL
for /f "tokens=3,* delims= " %%i in ('net statistics server ^| find /i "Statistics since"') do set _boot=%%i
for /f "tokens=2,* delims= " %%i in ('date /t') do set _now=%%i

call :Date2JDate %_boot% _bootJD
call :Date2JDate %_now% _nowJD

set /a _Elapsed=%_nowJD%-%_bootJD%

if %_Elapsed% LSS 15 (echo Success) else (echo Alert)
ENDLOCAL

goto TheEnd

:Date2JDate
SETLOCAL
for /f "tokens=1,2,3 delims=/" %%i in ('echo %1') do (set mm=%%i&set dd=%%j&set yy=%%k)
if %yy% LSS 100 set /a yy+=2000
set /a JD=dd-32075+1461*(yy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yy+4900+(mm-14)/12)/100)/4
ENDLOCAL & SET %~2=%JD%
goto TheEnd

:TheEnd

当然,这假定服务器的日期格式为MM/DD/YYYY