批处理bat判断一个文件在最近5分钟内是否被更新过的代码
问题背景描述:
检测程式查看一个X.log的文本里的时间,类似2008-11-112:00:00这样的格式,因为log当中每3分钟会刷新一次,所以时间也会变,现在我的思路是用程式抓到的最新也就是最大的时间和系统时间做比对,超过5分钟,则说明系统的log已经没有再生成(系统已经死了),然后确认死了之后,在连接上Oracle的一个DB,把一些栏位的资料insertinto到一张用来发送alarmmail的table当中去。不知道bat文档能否实现。
@echooff setSrcFile=D:/a.txt for/f"skip=5tokens=1-2delims="%%ain('dir/tw"%SrcFile%"')do( set"FileDay=%%a%%b" goto:compare ) :compare call:DateToMins%FileDay:~0,4%%FileDay:~5,2%%FileDay:~8,2%%FileDay:~11,2%%FileDay:~14,3%mFileDay call:DateToMins%date:~4,4%%date:~9,2%%date:~12,2%%time:~0,2%%time:~3,2%mToday set/amMinus=mToday-mFileDay if%mMinus%gtr5( echo"Thesystemisdown" )else( echo"Thesystemisrunning" ) pause goto:eof
:DateToMins%yy%%mm%%dd%%hh%%mm%result setlocalENABLEEXTENSIONS setyy=%1&setmm=%2&setdd=%3&sethh=%4&setnn=%5 if1%yy%LSS200if1%yy%LSS170(setyy=20%yy%)else(setyy=19%yy%) set/add=100%dd%%%100,mm=100%mm%%%100 set/az=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2 set/aj=j/5+dd+y*365+y/4-y/100+y/400-2472633 if1%hh%LSS20sethh=0%hh% if{%nn:~2,1%}EQU{p}if"%hh%"NEQ"12"sethh=1%hh%&set/ahh-=88 if{%nn:~2,1%}EQU{a}if"%hh%"EQU"12"sethh=00 if{%nn:~2,1%}GEQ{a}setnn=%nn:~0,2% set/ahh=100%hh%%%100,nn=100%nn%%%100,j=j*1440+hh*60+nn endlocal&set%6=%j%&goto:EOF