Что нового

Условие с датами

gipperpank

Новичок
Сообщения
10
Репутация
0
Доброго времени суток!
подскажите как написать следующее условие
если дата установки виндовс больше текущей даты то (действие)

пока что я дату установки брал из CMD systeminfo но никак не могу задать её как переменную ,
да и с условием тоже не всё понятно, если дата1 отнять дату2 и проверить больше или равно 2м годам

подскажите может я вообще не туда поехал
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
#include <Date.au3>

Local $sInstallDate = _Win32_OperatingSystem_InstallDate()
If @error Then Exit ConsoleWrite("!>_Win32_OperatingSystem_InstallDate @error: " & @error & @CRLF)
MsgBox(0, "", "Дата установки: " & $sInstallDate & @CRLF & _
		"Разница в секундах: " & _DateDiff("s", $sInstallDate, _NowCalc()) & " сек " & @CRLF & _
		"Разница в минутах: " & _DateDiff("n", $sInstallDate, _NowCalc()) & " мин" & @CRLF & _
		"Разница в часах: " & _DateDiff("h", $sInstallDate, _NowCalc()) & " ч" & @CRLF & _
		"Разница в днях: " & _DateDiff("D", $sInstallDate, _NowCalc()) & " дн" & @CRLF & _
		"Разница в месяцах: " & _DateDiff("M", $sInstallDate, _NowCalc()) & " мес" & @CRLF & _
		"Разница в годах: " & _DateDiff("Y", $sInstallDate, _NowCalc()) & " лет" & @CRLF)

Func _Win32_OperatingSystem_InstallDate()
	Local $oWMI, $oItems
	$oWMI = ObjGet("winmgmts:\\.\root\CIMV2")
	If Not IsObj($oWMI) Then Return SetError(1, 0, 0)
	$oItems = $oWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem")
	If Not IsObj($oItems) Then Return SetError(2, 0, 0)
	For $oIt In $oItems
		Return StringRegExpReplace($oIt.InstallDate, "\A(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(?:.*)", "$1/$2/$3 $4:$5:$6")
	Next
	Return SetError(3, 0, 0)
EndFunc   ;==>_Win32_OperatingSystem_InstallDate
 
Автор
G

gipperpank

Новичок
Сообщения
10
Репутация
0
У вас получилось и быстрее и более чем достаточно спасибо!
Код:
#include <Date.au3>
;берём дату установки виндовс
$instdata = RunWait(@ComSpec &' /c SystemInfo | find /i "дата"&pause ','',@SW_SHOW)
;проверка
MsgBox( 4096, "", "дата " & $instdata )
;-----Условие-----
;Если
;интервал в месяцах между сейчас и датой установки виндовс
;больше или равен 24 месяца то
If _DateDiff( 'm',_NowCalcDate(),$instdata) >= 24 Then
;Вывести сообщение на рабочий стол
MsgBox(0,"Информация",'текст '&_NowCalcDate()&' текст')
;в противном случае
Else
;Выход
    Exit
;конец условия
EndIf

а это я пытался сделать видимо пошёл не в ту сторону
 
Верх