|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Проверка времени создания файла |
|
CMD/BAT - Проверка времени создания файла
|
Новый участник Сообщения: 1 |
Профиль | Отправить PM | Цитировать Доброго времени суток. В Удостоверяющем центре каждый день выпускается список отзыва, необходимо проверять выпустился он или нет, то есть - если определённый файл в определённой папке был создан больше чем 24 часа 35 минут назад - произвести действие - например отправить письмо. Можнос делать запланированное задание, которое выполняется раз в 30 минут, т.к. перенос этого файла происходит тоже раз в 30 минут.
|
|
Отправлено: 08:16, 15-06-2012 |
Старожил Сообщения: 207
|
Профиль | Отправить 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие БД - Postgresql - действие по истечении времени(проверка кажд день)? | Killer_13 | Программирование и базы данных | 1 | 05-06-2012 23:08 | |
Переименовать файлы по маске и времени создания | porokh | AutoIt | 1 | 18-08-2011 11:13 | |
CMD/BAT - [решено] Как создать проверку в программе по времени создания файла | white155 | Скриптовые языки администрирования Windows | 2 | 01-08-2011 12:52 | |
CMD/BAT - Скачивание файла и проверка на отличия от файла на сервере. | maslovt | Скриптовые языки администрирования Windows | 2 | 08-05-2010 19:54 | |
C/C++ - Проверка даты и времени. | Jonik-Mnimonik | Программирование и базы данных | 3 | 20-11-2007 16:15 |
|