TXT日志文件,AU3有没有办法从最后一行开始向前读[已解决]
本帖最后由 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文件,以便从最后一次记录开始继续累加。如果在程序运行过程中日志文件越来越大,读取所耗费的时间也必将越来越长。
此问题如何解决呢?求高手赐教。 这样就倒过来啦!#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# 水木子
哈哈,高兴。没想到用自定义函数,还不熟练啊。。。谢谢
:face (29): 本帖最后由 netegg 于 2010-4-13 20:38 编辑
再告诉你一个简单的
#include <file.au3>
#Include <Array.au3>
Dim $aRecords
_FileReadToArray($file,$aRecords)
_FilewriteFromArray($temp, _ArrayReverse($aRecords, 1)) 用连接符号就好了,a &= b,a = b & a 回复 2# 水木子
太好了! AUTOIT的强人很多哦。 帮助里说,文件很大的时候还是用文件句柄会比用文件名要快一些。
也就是要在每次操作时都及时去open和close啦,否则就存在这样的担心:文件被open了,但程序出现某些问题导致文件未被正常close,这样日志文件就会被破坏。
或许,用脚本定时备份文件比较妥当一些。效率与安全不可兼顾啊 vbs fso对象其实可以从指定位置读且可以反向读取:face (31): 感觉这样效率不高
其实用 tail 或者 sed 命令都可以很好的完成任务。 楼上二位,在下请教了。 其实从任意行开始都行吧 谢谢分享。。。。。。。。。 good谢谢!
页:
[1]