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

If statement 使用if-else条件检查上次重新启动时间的批处理脚本,if-statement,batch-file,If Statement,Batch File,我想从我的服务器上获得一些细节,比如上次使用批处理文件重新启动时的细节。 我正在使用命令 systeminfo | findstr“时间:” 获取服务器的当前启动时间 现在我的问题是,我想将当前的启动时间与计算机日期和时间进行比较,并确保如果在15天内重新启动,则显示“成功”;如果在15天内未重新启动,则显示“警报”有办法将MM/DD/YYYY日期格式转换为儒略日期。如果这样做,您可以从boot中减去now,找到差异 通过调整Date2JDate公式,我能够得到服务器启动的日期和今天的日期;并

我想从我的服务器上获得一些细节,比如上次使用批处理文件重新启动时的细节。 我正在使用命令

systeminfo | findstr“时间:”

获取服务器的当前启动时间


现在我的问题是,我想将当前的启动时间与计算机日期和时间进行比较,并确保如果在15天内重新启动,则显示“成功”;如果在15天内未重新启动,则显示“警报”

有办法将
MM/DD/YYYY
日期格式转换为儒略日期。如果这样做,您可以从
boot
中减去
now
,找到
差异

通过调整
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

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

通过调整
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

系统驱动器根目录中隐藏的*.SYS文件的时间戳也是上次重新启动时的时间戳。您可以将它们与FORFILES.EXE一起使用,以检查年龄。系统驱动器根目录中隐藏的*.SYS文件的时间戳也是上次重新启动时的时间戳。您可以将它们与FORFILES.EXE一起使用来检查年龄。我的代码是@echo off del“C:\temp\%computername%.txt echo.>>C:\temp\%computername%.txt echo日期=%date%>>C:\temp\%computername%>>C:\temp\%computername%>>txt echo主机名=系统信息| findstr“域名:>>C:\temp\%computername%.txt ipconfig | findstr”IP地址“>>C:\temp\%computername%.txt systeminfo | findstr”时间:”>>C:\temp\%computername%.txt@echo off这将捕获日期和时间、主机名以及上次启动记录,并将其保存在txt文件中,我需要比较系统时间和上次启动时间,并在重新启动少于15天时向我发出警报。我修改了代码以使其适用于您。只需将其另存为CheckBoot.bat并将这一行添加到代码中:
callcheckboot>>C:\temp\%computername%.txt
。如果您想要一些带有状态(成功/警报)的文本,只需将文本添加到
CheckBoot.bat
文件中的
echo
语句中。我的编码是@echo off del“C:\temp\%computername%.txt echo.>>C:\temp\%computername%.txt echo日期=%date%>>C:\temp\%computername%.txt echo时间=%time%>>C:\temp\%computername%.txt echo主机名=systeminfo | findstr”域名:>>C:\temp\%computername%.txt systeminfo | findstr”时间:>>C:\temp\%computername%.txt@echo off这将捕获日期和时间、主机名以及上次启动记录,并将其保存在txt文件中,我需要比较系统时间和上次启动时间,并在重新启动少于15天时向我发出警报。我修改了代码以使其适用于您。只需将其另存为CheckBoot.bat并将这一行添加到代码中:
callcheckboot>>C:\temp\%computername%.txt
。如果您想要一些带有状态(成功/警报)的文本,只需将文本添加到
CheckBoot.bat
文件中的
echo
语句中即可。