xymc 发表于 2015-4-9 02:30:26

检测文本是否有数据写入,并显示

本帖最后由 xymc 于 2015-4-13 05:51 编辑

D盘共享目录里面有个开机记录.txt的文本,
格式如下
pc-00110:30开机
pc-00512:45开机
pc-00115:32开机
PC-00516:49开机

想做个程序实时检测这个文本是否有数据写入,并显示最后一行文字,如 PC-00516:49开机
定时检测也行,显示最后一行
显示最后一行内容这个还好,主要是怎么实时检测该文本是否有数据写入?请教下大家



#include "file.au3"
#include<IE.au3>
Const $FileName="c:\开机记录.txt"
Local $FileTime,$yyyymd

$FileTime = FileGetTime($FileName,0,1)
While (@HOUR>=1 And @HOUR <=23)
      $yyyymd = FileGetTime($FileName,0,1)
      If($FileTime <> $yyyymd) Then;检查文件是否被修改过(修改过时间会变化)
                        $FileTime = $yyyymd

$line = _FileCountLines("开机记录.txt")
$Word = FileReadLine("开机记录.txt", $line)

                        TrayTip("发现开机", $Word, 5, 3)
      EndIf
      Sleep(1000) ;1秒钟检查一次文件
WEnd



如何把这里设为一个变量

$line = _FileCountLines("$x1")
$Word = FileReadLine("$x1", $line)

                        TrayTip("发现开机", $Word, 5, 3)

但它不会生效,用前面的变量$FileName 这个也不行,请教下大家 要不是要再加一个变量?还是怎么读取前面那个$FileName变量?

半芯竹 发表于 2015-4-9 09:31:29



像这样???为什么不自己先动手呢。。

半芯竹 发表于 2015-4-9 09:34:23

检测有无新数据写入很简单。先把首次检测到的行数记录,然后把行数来作为对比就知道了。如果不相等,就读取最后一行数据。。简单的。自己先练习下,有什么不懂再发上来问吧。要学会用搜索。。

netegg 发表于 2015-4-9 22:58:35

回复 3# 半芯竹
错了,楼主貌似更主要的是要实时监控文件是否改变

要求不严格的话,用filegettime应该就行了

xymc 发表于 2015-4-11 03:59:40

本帖最后由 xymc 于 2015-4-11 04:04 编辑

回复 4# netegg
对的,就是这个意思,可以这个检测太频烦会很吃CPU,怎样优化这个检测机制?

netegg 发表于 2015-4-11 12:18:51

用日志可能也行,不过监控这类事都是常驻内存的,就算用日志好像也不会即时报告

xymc 发表于 2015-4-12 04:05:37

回复 6# netegg


    那怎么搞啊?

www378660084 发表于 2015-4-12 10:54:54

获取文件更改时间用不了多少系统资源的

xymc 发表于 2015-4-14 03:14:07

就差一个变量了,大家帮帮忙
页: [1]
查看完整版本: 检测文本是否有数据写入,并显示