标题: [其他] [已解决]如何延时调用外部批处理文件,并比较日志? [打印本页]
作者: zfen12x 时间: 2012-3-19 16:30 标题: [已解决]如何延时调用外部批处理文件,并比较日志?
本帖最后由 zfen12x 于 2012-3-20 14:31 编辑
求助,想写一个批处理文件,需要如下功能:
1.该批处理文件会调用另一个批处理文件,并获取被调用文件的log。
2.每隔一定时间(例如五分钟)比较两次log文件的大小是否有变化。如没有变化,kill掉被调用的批处理文件,并重新调用。
现在有如下几个问题:
1,延迟如何做?也就是linux下的sleep;在批处理下应该如何做?
2,bash下的kill在dos环境下如何处理?
3,第三个问题有点脸红了。。。比较两个log文件如何比较。。。
提前表示感谢!
由于小弟确实是新人,今天上午才接触批处理和dos环境,并且,项目要求较急。无奈之下做了伸手党。还望各位见谅!
作者: dnfreeuser 时间: 2012-3-19 16:39
我写的第三方延时程序,运行后延时1秒
http://www.bathome.net/attachmen ... ms5ZjRHb1RUVmtsOC9j
作者: zfen12x 时间: 2012-3-19 16:50
谢谢楼上,如此看来批处理没有提供现成的延时app呀。
还有一个问题,批处理的循环是如何做的?
例如C语言中的while或者for。如果我利用楼上的那个binary,那么我应该写一个600次循环才可以。
但是批处理中的for。。好像和perl中的foreach很类似。但是和C中的for又不一样。。。谢谢了!
作者: CrLf 时间: 2012-3-19 16:54
本帖最后由 CrLf 于 2012-3-19 16:55 编辑
任何命令都可以是延时命令...- ping /t 300 127.1
- rem 延时 300 秒,ping 是比较常用的延时方案,相对低耗而准确,但不适合长时间延时
- ::也可以利用外部命令自带的延时功能,长时间延时的情况下较为准确
- wmic os get name /every:60 /repeat:5 >nul
- rem 延时 60 秒,循环 5 次
- typeperf "\objects\events" -sc 300 >nul
- rem 延时 300 秒
复制代码
- @echo off>>new.log
- %1 start /b "test" test.bat
- (
- copy /y new.log old.log >nul
- fc 1.log 2.log&&taskkill /f /t /fi "windowtitle eq test"&&start /b "test" test.bat
- wmic os get name /every:60 /repeat:5
- %0 :
- )>nul
- rem 如果是以管理员身份运行,taskkill 那句的条件应该写成 "windowtitle eq 管理员: test"
复制代码
作者: zfen12x 时间: 2012-3-19 16:57
有用 谢谢ls!
作者: find 时间: 2012-3-19 18:24
回复 3# zfen12x
http://www.bathome.net/viewthread.php?tid=3693#pid23312
作者: zfen12x 时间: 2012-3-20 09:00
谢谢楼上,还想请教大家一个问题,
for循环中的skip参数可以忽略从前往后数的行数(当for读取文件的时候),那么我的问题是,如果我想从后往前读呢?
因为我想没隔一段时间(例如五分钟)读取最新的log信息,也就是最后几行是否出现某关键字,当关键字存在,我就goto,跳出循环。如果从前往后一直读,也是可以实现的,但是当log文件很大时,效率就成问题了。
谢谢大家。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |