批处理bat判断一个文件在最近5分钟内是否被更新过的代码
来源: 阅读:1192 次 日期:2014-08-12 14:55:39
温馨提示: 小编为您整理了“批处理bat判断一个文件在最近5分钟内是否被更新过的代码”,方便广大网友查阅!

问题背景描述:

检测程式查看一个X.log的文本里的时间,类似2008-11-1 12:00:00 这样的格式,因为log当中每3分钟会刷新一次,所以时间也会变,现在我的思路是用程式抓到的最新也就是最大的时间和系统时间做比对,超过5分钟,则说明系统的log已经没有再生成(系统已经死了),然后确认死了之后,在连接上Oracle的一个DB,把一些栏位的资料 insert into 到一张用来发送alarm mail的table当中去。不知道bat文档能否实现。

代码如下:

@echo off

set SrcFile=D:/a.txt

for /f "skip=5 tokens=1-2 delims= " %%a in ('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 /a mMinus=mToday-mFileDay

if %mMinus% gtr 5 (

    echo "The system is down"

) else (

    echo "The system is running"

)

pause

goto :eof

:DateToMins %yy% %mm% %dd% %hh% %mm% result

setlocal ENABLEEXTENSIONS

set yy=%1&set mm=%2&set dd=%3&set hh=%4&set nn=%5

if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)

set /a dd=100%dd%%%100,mm=100%mm%%%100

set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2

set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633

if 1%hh% LSS 20 set hh=0%hh%

if {%nn:~2,1%} EQU {p} if "%hh%" NEQ "12" set hh=1%hh%&set/a hh-=88

if {%nn:~2,1%} EQU {a} if "%hh%" EQU "12" set hh=00

if {%nn:~2,1%} GEQ {a} set nn=%nn:~0,2%

set /a hh=100%hh%%%100,nn=100%nn%%%100,j=j*1440+hh*60+nn

endlocal&set %6=%j%&goto :EOF

更多信息请查看IT技术专栏

更多信息请查看脚本栏目
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map