Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для CyberMuesli

Старожил


Сообщения: 207
Благодарности: 18

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off

:demo
setlocal enabledelayedexpansion

call :LastFileByDate "%windir%"
call :FileInfo "!LastFileByDate!" BadCertificateList
call :DisplayFileInfo BadCertificateList

set /a MaxAgo=24*60*60 + 35*60

if BadCertificateList.ModifyedSecAgo GTR !MaxAgo! (
   echo Too old BadCertificateList file
) else (
   echo BadCertificateList file is ok
)


goto :eof

: (C) CyberMuesli 2012.06.16

::===========================================================================
:d2jdn
::===========================================================================
:: %1=date as DD.MM.YYYY. ret: %2:=%d2jdn%:=julian day number
:: reference http://ru.wikipedia.org/wiki/Юлианская_дата
set d2jdn.Param=%~1
set d2jdn.Sign=!d2jdn.Param:~6,1!
if "!d2jdn.Sign!"=="-" (
   set d2jdn.Param=!d2jdn.Param:-=!
)

set d2jdn.Year=!d2jdn.Param:~6,4!
if "!d2jdn.Sign!"=="-" (
   set /a d2jdn.Year=-!d2jdn.Year! + 1
)
set d2jdn.Month=!d2jdn.Param:~3,2!
set d2jdn.Day=!d2jdn.Param:~0,2!
set /a d2jdn.Day=100%d2jdn.Day% %% 100
set /a d2jdn.Month=100%d2jdn.Month% %% 100

set /a d2jdn.A=(14-d2jdn.Month)/12
set /a d2jdn.Y=d2jdn.Year+4800-d2jdn.A
set /a d2jdn.M=d2jdn.Month+12*d2jdn.A-3

for /f "tokens=1 delims=:" %%i in ("%0") do (
    set /a "%%i=d2jdn.Day + (153*d2jdn.M+2)/5 + 365*d2jdn.Y + d2jdn.Y/4 - d2jdn.Y/100 + d2jdn.Y/400 - 32045"
    if not "%2"=="" (set %2=!%%i!)
)
goto :eof

::===========================================================================
:StrLen
::===========================================================================
:: %1=VarName, ret !strLen!
set StrLen.S=A!%~1!
set StrLen=0
for /L %%P in (12,-1,0) do (
    set /a "StrLen|=1<<%%P"
    for %%I in (!StrLen!) do if "!StrLen.S:~%%I,1!"=="" set /a "StrLen&=~1<<%%P"
)
goto :eof

::===========================================================================
:dt2sec
::===========================================================================
:: %1="DD.MM.YYYY HH:MM:SS", [%2:=%:dt2sec%:=date time in seconds from 01.01.1980]

set dt2s.Param=%~1
set dt2s.Year=!dt2s.Param:~6,4!
set dt2s.Month=!dt2s.Param:~3,2!
set dt2s.Day=!dt2s.Param:~0,2!
set dt2s.HH=!dt2s.Param:~11,2!
set dt2s.MM=!dt2s.Param:~14,2!
set dt2s.SS=!dt2s.Param:~17,2!

set dt2s.HH=!dt2s.HH: =!
call :strLen dt2s.HH & if !strLen!==1 (set dt2s.HH=0!dt2s.HH!)

if %dt2s.Year% LSS 1980 (
   set %2=0
   goto :eof
)

if "%dt2s.Year%.%dt2s.Month%.%dt2s.Day% %dt2s.HH%:%dt2s.MM%:%dt2s.SS%" GEQ "2048.01.19 03:14:07" (
   set /a %2=0x7FFFFFFF+0
   goto :eof
)

call :d2jdn %dt2s.Day%.%dt2s.Month%.%dt2s.Year%
set /a dt2s.Days=d2jdn-2444240

set /a dt2s.HH=100%dt2s.HH% %% 100
set /a dt2s.MM=100%dt2s.MM% %% 100
set /a dt2s.SS=100%dt2s.SS% %% 100

for /f "tokens=1 delims=:" %%i in ("%0") do (
    set /a "%%i=dt2s.Days*86400 + dt2s.HH*3600 + dt2s.MM*60 + dt2s.SS"
    if not "%2"=="" (set %2=!%%i!)
)
goto :eof

: (C) CyberMuesli 2012
: Файловые функции

::===========================================================================
:FileInfo
::===========================================================================
:: %1: filename %2: VarName
:: return: VarName.Origin VarName.Drive VarName.Path... etc

set %2.Origin=%1
for %%i in (%1) do (
   set %2.Drive=%%~di
   set %2.Path=%%~pi
   set %2.DPath=%%~dpi
   set %2.PNX=%%~fi
   set %2.NX=%%~nxi
   set %2.DT=%%~ti
   set %2.Size=%%~zi
)

if not "!%2.DT!"=="" (
   set %2.Year=!%2.DT:~6,4!
   set %2.Month=!%2.DT:~3,2!
   set %2.Day=!%2.DT:~0,2!
   set %2.HH=!%2.DT:~11,2!
   set %2.MM=!%2.DT:~14,2!
   set %2.SS=00
   call :dt2sec "%DATE% %TIME%" Now.DTSec
   call :dt2sec "!%2.DT!.00"     %2.DTSec
   set /a %2.ModifyedSecAgo=Now.DTSec-%2.DTSec
)
goto :eof

::===========================================================================
:DisplayFileInfo
::===========================================================================
echo %1.Origin		!%1.Origin!
echo %1.Drive		!%1.Drive! 
echo %1.Path		!%1.Path!  
echo %1.DPath		!%1.DPath!  
echo %1.PNX		!%1.PNX!
echo %1.NX		!%1.NX!
echo %1.DT		!%1.DT!
echo %1.DTSec		!%1.DTSec!
echo %1.Size		!%1.Size!
echo %1.Year,Month,Day	!%1.Year!,!%1.Month!,!%1.Day!
echo %1.HH,MM,SS	!%1.HH!,!%1.MM!,!%1.SS!
echo %1.ModifyedSecAgo	!%1.ModifyedSecAgo!
goto :eof

::===========================================================================
:LastFileByDate
::===========================================================================
:: %1=Path[\[FileMask]] %2:=full file name

set lfbd.DirLineN=1
for /f "tokens=* delims=" %%a in ('dir %1 /b /o-d /a:-d 2^>nul') do (
    if !lfbd.DirLineN!==1 (
       set lfbd.DirNX=%%a
    )
    set /a lfbd.DirLineN+=1
)

if not "!lfbd.DirNX!"=="" (
   for %%a in ("%~1\") do (
      set lfbd.DPath=%%~dpa
   )
)

set lfbd.DirNX=!lfbd.DPath!!lfbd.DirNX!

for /f "tokens=1 delims=:" %%i in ("%0") do (
    set %%i=!lfbd.DirNX!
    if not "%2"=="" (set %2=!%%i!)
)
goto :eof

-------
Кибер Мюсли


Последний раз редактировалось CyberMuesli, 17-06-2012 в 01:16.


Отправлено: 01:06, 17-06-2012 | #2