[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]如何延时调用外部批处理文件,并比较日志?

本帖最后由 zfen12x 于 2012-3-20 14:31 编辑

求助,想写一个批处理文件,需要如下功能:
1.该批处理文件会调用另一个批处理文件,并获取被调用文件的log。
2.每隔一定时间(例如五分钟)比较两次log文件的大小是否有变化。如没有变化,kill掉被调用的批处理文件,并重新调用。

现在有如下几个问题:
1,延迟如何做?也就是linux下的sleep;在批处理下应该如何做?
2,bash下的kill在dos环境下如何处理?
3,第三个问题有点脸红了。。。比较两个log文件如何比较。。。

提前表示感谢!

由于小弟确实是新人,今天上午才接触批处理和dos环境,并且,项目要求较急。无奈之下做了伸手党。还望各位见谅!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

我写的第三方延时程序,运行后延时1秒
http://www.bathome.net/attachmen ... ms5ZjRHb1RUVmtsOC9j

TOP

谢谢楼上,如此看来批处理没有提供现成的延时app呀。

还有一个问题,批处理的循环是如何做的?
例如C语言中的while或者for。如果我利用楼上的那个binary,那么我应该写一个600次循环才可以。
但是批处理中的for。。好像和perl中的foreach很类似。但是和C中的for又不一样。。。谢谢了!

TOP

本帖最后由 CrLf 于 2012-3-19 16:55 编辑

任何命令都可以是延时命令...
  1. ping /t 300 127.1
  2. rem 延时 300 秒,ping 是比较常用的延时方案,相对低耗而准确,但不适合长时间延时
  3. ::也可以利用外部命令自带的延时功能,长时间延时的情况下较为准确
  4. wmic os get name /every:60 /repeat:5 >nul
  5. rem 延时 60 秒,循环 5 次
  6. typeperf "\objects\events" -sc 300 >nul
  7. rem 延时 300 秒
复制代码
  1. @echo off>>new.log
  2. %1 start /b "test" test.bat
  3. (
  4.    copy /y new.log old.log >nul
  5.    fc 1.log 2.log&&taskkill /f /t /fi "windowtitle eq test"&&start /b "test" test.bat
  6.    wmic os get name /every:60 /repeat:5
  7.    %0 :
  8. )>nul
  9. rem 如果是以管理员身份运行,taskkill 那句的条件应该写成 "windowtitle eq 管理员: test"
复制代码
1

评分人数

TOP

有用 谢谢ls!

TOP

TOP

谢谢楼上,还想请教大家一个问题,
for循环中的skip参数可以忽略从前往后数的行数(当for读取文件的时候),那么我的问题是,如果我想从后往前读呢?
因为我想没隔一段时间(例如五分钟)读取最新的log信息,也就是最后几行是否出现某关键字,当关键字存在,我就goto,跳出循环。如果从前往后一直读,也是可以实现的,但是当log文件很大时,效率就成问题了。

谢谢大家。

TOP

返回列表