xymc 发表于 2016-9-25 18:58:16

读取1.txt里面的第一行,读完删除第一行,然后将读到的内容写入到2.txt

本帖最后由 xymc 于 2016-9-25 19:15 编辑

读取1.txt里面的第一行,读完删除第一行,然后将读到的内容写入到2.txt
1.txt内容
第一行
第二行
第三行

#include <File.au3>

; 如果文件为空的,脚本退出.
Local $line = FileReadLine("1.txt")
If @error = -1 Then Exit

SwapString(@ScriptDir & '\1.txt')

Func SwapString($File)
      Local $txt, $tmpfile = @TempDir & '\tmp.txt'
      FileDelete($tmpfile)
      Local $tmp = FileOpen($tmpfile, 1)
      _FileReadToArray($File, $txt)

      For $i = 2 To $txt
                FileWriteLine($tmp, $txt[$i])
      Next
      Local $Pfile = FileOpen("2.txt", 2)
      FileWriteLine($Pfile,$txt)
      FileClose($Pfile)
      FileMove($tmpfile, $File, 1)
EndFunc   ;==>SwapString


这个单独运行没有问题,放到其他程序里面就出错了,为什么呢?哪里错了

或者有没有简单一点的写法?

zghwelcome 发表于 2016-9-25 19:35:37

其他程序调用,都存在一个执行路径的问题
Local $line = FileReadLine(@ScriptDir & "\1.txt")

Alam 发表于 2016-9-25 19:37:14

回复 1# xymc

删除第一行可以这样Local $sTxt = '第一行' & @CRLF & _
            '第二行' & @CRLF & _
            '第三行'

MsgBox(0, '', StringRegExpReplace($sTxt, '^\V*\v+', ''))

Srsly 发表于 2016-9-26 20:24:50

#include <File.au3>
Local $ReadFilePath = @ScriptDir & '\1.txt'
Local $WriteFilePath = @ScriptDir & '\2.txt'
Local $LineOne = ''                                                                        ;$LineOne 为读取到的第一行的内容
;若文件不存在,则退出
IfNot FileExists( $ReadFilePath ) Then
        MsgBox(0,'Error','文件不存在!')
        Exit
;若文件存在且为空,则退出
Else
        $hFile = FileOpen( $ReadFilePath )
        If $hFile = -1 Then
                MsgBox(0,'Error','打开文件失败!')
        EndIf
        $LineOne = FileReadLine($hFile)
        If $LineOne = -1 Then
                MsgBox(0,'Error','文件为空!')
                Exit
        EndIf
EndIf
;删除第一行
_FileWriteToLine($ReadFilePath,1,'',1)
If @error Then
        MsgBox(0,'Error','写入文件失败,错误代码:' & @error )
EndIf
;关闭文件
FileClose( $hFile )
;写入文件
$hFile = FileOpen( $WriteFilePath ,2 + 8)
FileWrite( $hFile , $LineOne )
FileClose( $hFile )

qq82015930 发表于 2016-10-2 01:51:04

_FileWriteToLine{:face (356):}
页: [1]
查看完整版本: 读取1.txt里面的第一行,读完删除第一行,然后将读到的内容写入到2.txt