找回密码
 加入
搜索
查看: 9755|回复: 11

[AU3基础] [已解决]怎样在文本文件的第一行写入或删除某一行?

  [复制链接]
发表于 2012-12-21 13:02:30 | 显示全部楼层 |阅读模式
本帖最后由 solox 于 2012-12-23 10:53 编辑

hi,我编写了一个AU3脚本,并准备用一个文件来记录脚本运行的日期,运行一次则写入一行当天的日期,如果当天的日期已经在文件中则不写入,如
2012-12-08
2012-12-09
2012-12-12
2012-12-13
2012-12-14

但是我只想保存最近5次(5行),如何删除第一行?比如我12月15日又运行了一次,如何实现写入2012-12-15,并删除2012-12-08?

或者用倒序记录,那么如何实现在第一行写入,并删除最后一行?
发表于 2012-12-21 16:13:53 | 显示全部楼层
_filereadtoarray
_arraypush
fileopen
_filewritefromarray
fileclose
发表于 2012-12-21 17:24:57 | 显示全部楼层
学 习 了 .
发表于 2012-12-21 20:56:18 | 显示全部楼层
回复 1# solox

日志一般都是用倒序的, 方便查看最新的信息.
只用内置函数, 其实难点在于删除信息吧. 以下是用正则删除的.
$file = 'rec.txt'
If Not FileExists($file) Then FileWrite($file, '')
$date = @YEAR & '-' & @MON & '-' & @MDAY
$data = FileRead($file)
If Not StringInStr($data, $date) Then
        $data =$date & @CRLF & StringRegExpReplace($data, '.+$', '')
        FileOpen($file, 2)
        FileWrite($file, $data)
        FileClose($file)
EndIf

评分

参与人数 1金钱 +10 收起 理由
solox + 10 谢谢帮忙

查看全部评分

发表于 2012-12-21 23:35:06 | 显示全部楼层
本帖最后由 netegg 于 2012-12-21 23:51 编辑

日志一般都是用倒序的?倒序倒是方便了,还用替换干什么
$hFile =fileopen($file)
FileSetPos($hFile, stringinstr($file, @cr,0,-1 ), $FILE_BEGIN)
filewrite($file, $line &@crlf & fileread($hFile))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-12-22 02:44:59 | 显示全部楼层
本帖最后由 netegg 于 2012-12-22 03:02 编辑

[au3]#include <Constants.au3>
Local Const $aFile = "test.txt"
Local $hFile = FileOpen($aFile, 1)
FileFlush($hFile)
FileSetPos($hFile, 0, $file_begin)
FileSetPos($hFile, StringInStr(FileRead($aFile), Chr(13), 0, -1), $file_current)
$last = FileRead($aFile,Filegetpos($hFile))
FileOpen($aFile, 2)
FileWrite($aFile, $line & @CRLF & $last)
FileClose($hFile)
[/au3]
有一点要注意,最后一行后面不能再有回车,否则那个-1不对
还有点问题,如果是@crlf结尾删不掉,再想想吧
发表于 2012-12-22 19:20:59 | 显示全部楼层
本帖最后由 netegg 于 2012-12-23 10:47 编辑

[au3]#include <Constants.au3>
Local Const $aFile = "test.txt"
Local $line = '12345'
Local $hFile = FileOpen($aFile, 1)
FileFlush($hFile)
FileSetPos($hFile, 0, $file_begin)
FileSetPos($hFile, StringInStr(stringstripws(FileRead($aFile), 2), Chr(13), 0, -1), $file_current)
$last = FileRead($aFile,Filegetpos($hFile))
FileOpen($aFile, 2)
FileWrite($aFile, $line & @CRLF & $last)
FileClose($hFile)
[/au3]搞定,删除最后一行,添加第一行

评分

参与人数 1金钱 +20 收起 理由
solox + 20 谢谢帮忙

查看全部评分

 楼主| 发表于 2012-12-23 10:47:22 | 显示全部楼层
只想大家提供个思路的,没想到解答得那么详细,太有爱了,非常感谢
发表于 2012-12-29 00:42:59 | 显示全部楼层
学习了
发表于 2013-5-29 23:20:00 | 显示全部楼层
踩个脚印。。。。。。。。。。
发表于 2013-5-29 23:20:04 | 显示全部楼层
踩个脚印。。。。。。。。。。
发表于 2015-1-25 18:47:46 | 显示全部楼层
egg的回答很详细,刚好可以借鉴到我的工作上,之前是bat写的,有些繁琐
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-3 18:37 , Processed in 0.081487 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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