jmm000 发表于 2015-8-6 23:59:09

(已解决)请问如何查找最新文件,然后在文本顶部插入一行,再重命名另存?

本帖最后由 jmm000 于 2015-8-17 11:09 编辑

比如“c:\abc\”文件夹下有如下文本,现在想自动修改当天的文本,在"DHCP_macaddress_20150806.txt"顶部插入一行bbbbbb,然后重命名另存为c.txt,如已有c.txt,则覆盖。
文本尾部添加可以用FileWrite,在顶部添加用什么?
关于名称不定的重命名,filemove怎么用?

jmm000 发表于 2015-8-7 00:07:13

先感谢之前版主haijie1223的回复http://www.autoitx.com/forum.php?mod=viewthread&tid=49187&highlight=
根据文件名判断最新文件,然后发现要修改文本和重命名我还是不会。。。。{:1_345:}

luren666 发表于 2015-8-7 01:13:06

可以使用FileFindFirstFile和FileFindNextFile 配合遍历某文件夹(帮助文档里面有例子),然后判断文件名是否为“DHCP_macaddress_”开头,也可同时FileGetTime判断文件修改时间,如果符合条件,则可能往文件里面写数据,然后改名。 往文件尾写数据很简单,往文件头写数据就需要把整个文件读到数组或变量,在前面添加数据,然后再写回去,如:$filename = "d:\test.txt"
$lines = "新数据第一行" & @CRLF & FileRead($filename,FileGetSize($filename))

$file = FileOpen($filename,2)
FileWrite($file,$lines)
FileClose($file)当然这里你可以直接把数据写到新文件,然后删除旧文件,也可以写到旧文件,然后改名。

jmm000 发表于 2015-8-7 08:43:48

先谢谢,我试着写下。

haijie1223 发表于 2015-8-7 08:49:59

;~ Dim $filename = "DHCP_macaddress_" & @YEAR & @MON & @MDAY & ".txt"
;~ If Not FileExists("d:\world\") Then DirCreate("d:\world\")
;~ If FileExists("c:\abc\" & $filename) Then FileCopy("c:\abc\" & $filename, "d:\world\" & $filename)

Dim $FileName = "c:\abc\DHCP_macaddress_" & @YEAR & @MON & @MDAY & ".txt"
Dim $Nfile = "c:\abc\c.txt"
Dim $hFile = FileOpen($FileName)
Dim $sContent = FileRead($hFile)
FileClose($hFile)
$hFile = FileOpen($Nfile, 2 + 8)
FileWrite($hFile, "bbbbbb" & @CRLF & $sContent)
FileClose($hFile)

jmm000 发表于 2015-8-7 12:07:14

本帖最后由 jmm000 于 2015-8-8 19:43 编辑

额,谢谢楼上版主!楼上版主的代码在win7上运行没有问题。在server 2008 r2上,发现生成的文本只有新插入的一行代码,没有原来的内容。我在两台服务器上测试了都这样。为什么?难道是bug???

haijie1223 发表于 2015-8-8 23:28:15

回复 6# jmm000


    读取文件内容这么简单的事情,自己慢慢分析一下就找到原因了。

tubaba 发表于 2015-8-10 10:37:42

使用 FileSetPos() 将同一文件的同时读写成为可能. 当您在同时读写同一文件时, 请在每次读写操作后调用 FileFlush() 将缓冲器数据写入磁盘.

jmm000 发表于 2015-8-17 11:08:50

楼上正解。添加FileFlush()即可。谢谢!

jmm000 发表于 2015-8-17 11:09:30

楼上正解。添加FileFlush()即可。谢谢!

ddrs 发表于 2015-8-17 11:59:59

不错学习学习
页: [1]
查看完整版本: (已解决)请问如何查找最新文件,然后在文本顶部插入一行,再重命名另存?