找回密码
 加入
搜索
查看: 5328|回复: 14

[AU3基础] TXT日志文件,AU3有没有办法从最后一行开始向前读[已解决]

 火.. [复制链接]
发表于 2010-4-13 11:49:44 | 显示全部楼层 |阅读模式
本帖最后由 xiehuahere 于 2010-4-13 19:25 编辑

据我所知,貌似VBS做不了,只能从文件头开始往文件尾读取,无法指定其他起始位置且无法反向读取。如下例:
Const ForReading = 1 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading) 
Do Until objFile.AtEndOfStream 
strLine = objFile.ReadLine 
Loop 
objFile.Close 
Wscript.Echo strLine 
AU3可以吗?
我需要在每次程序重新运行时去读取一下log文件,以便从最后一次记录开始继续累加。如果在程序运行过程中日志文件越来越大,读取所耗费的时间也必将越来越长。
此问题如何解决呢?求高手赐教。

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-4-13 12:02:05 | 显示全部楼层
这样就倒过来啦!
#Include <File.au3>
Local $sText

$Path = @ScriptDir & '\Text.txt'
$Line = _FileCountLines($Path)

For $i = $Line To 1 Step -1
        $sText &= FileReadLine($Path, $i) & @CRLF
Next        

MsgBox(0, '反序读取结果', $sText)

评分

参与人数 2威望 +2 金钱 +10 收起 理由
afan + 2
xiehuahere + 10 谢谢

查看全部评分

发表于 2010-4-13 12:18:24 | 显示全部楼层
不错,我啦顶。。
 楼主| 发表于 2010-4-13 19:12:35 | 显示全部楼层
回复 2# 水木子

哈哈,高兴。没想到用自定义函数,还不熟练啊。。。谢谢
发表于 2010-4-13 20:33:13 | 显示全部楼层
本帖最后由 netegg 于 2010-4-13 20:38 编辑

再告诉你一个简单的
#include <file.au3>
#Include <Array.au3>
Dim $aRecords
_FileReadToArray($file,$aRecords)
_FilewriteFromArray($temp, _ArrayReverse($aRecords, 1))
发表于 2010-4-13 20:45:59 | 显示全部楼层
用连接符号就好了,a &= b,a = b & a
发表于 2010-4-14 10:06:08 | 显示全部楼层
回复 2# 水木子
太好了!
发表于 2010-4-14 11:30:03 | 显示全部楼层
AUTOIT的强人很多哦。
 楼主| 发表于 2010-4-14 14:11:34 | 显示全部楼层
帮助里说,文件很大的时候还是用文件句柄会比用文件名要快一些。
也就是要在每次操作时都及时去open和close啦,否则就存在这样的担心:文件被open了,但程序出现某些问题导致文件未被正常close,这样日志文件就会被破坏。
或许,用脚本定时备份文件比较妥当一些。效率与安全不可兼顾啊
发表于 2010-4-14 14:37:32 | 显示全部楼层
vbs fso对象其实可以从指定位置读且可以反向读取
发表于 2010-4-14 14:51:34 | 显示全部楼层
感觉这样效率不高
其实用 tail 或者 sed 命令都可以很好的完成任务。
 楼主| 发表于 2010-4-14 15:10:54 | 显示全部楼层
楼上二位,在下请教了。
发表于 2010-4-14 20:39:32 | 显示全部楼层
其实从任意行开始都行吧
发表于 2012-5-29 09:02:03 | 显示全部楼层
谢谢分享。。。。。。。。。
发表于 2013-1-29 17:35:48 | 显示全部楼层
good  谢谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-13 10:01 , Processed in 0.087238 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表