elexy 发表于 2010-10-29 15:12:26

[已解决]请教高手如何将某个文本文件的每一行加上一串内容

本帖最后由 elexy 于 2010-10-30 09:06 编辑

set arg=WScript.Arguments
if arg.count=0 then
msgbox "Usage:"&vbcrlf&vbcrlf&" 不要直接运行这个脚本,把需要进行字符串替换的一个或多个文件拖曳到这个脚本文件上来就可以了。"
wscript.quit
end if
set fso=wscript.createobject("scripting.filesystemobject")
set fr=fso.opentextfile(arg(0),1)
set fw=fso.createtextfile("temp.txt",2)
data=inputbox("请输入在行前添加的字符:")
do
fw.writeline(data&fr.readline)
loop until fr.atendofstream
fr.close
fw.close
set fr=fso.opentextfile("temp.txt",1)
set fw=fso.createtextfile(arg(0),2)
do
fw.writeline(fr.readline)
loop until fr.atendofstream
fr.close
fw.close
fso.deletefile("temp.txt")
这个VBS可以实现,但是不知道AU3有没有什么简洁的代码可以实现。

njuFerret 发表于 2010-10-29 15:35:06

高效不知道,偶就知道把文件打开,filereadline读入,然后加上字符串,最后再保存....

kingfirekkk 发表于 2010-10-29 19:21:39

本帖最后由 kingfirekkk 于 2010-10-29 19:29 编辑

感觉用正则式可以实现这个功能,比如说在换行符后面再加一个变量即可...建议请Afan版主帮忙..

netegg 发表于 2010-10-29 19:37:19

本帖最后由 netegg 于 2010-10-29 19:42 编辑

#include<file.au3>
#include<array.au3>
Dim $file = @ScriptDir & "\1.txt", $aA
_filereadtoarray($file, $aA)
for $i = 1 to $aA
$aA[$i] = $aA[$i] & '123456789'
next
fileopen($file, 2)
fileclose($file)
_ArrayDelete($aA, 0)
_filewritefromarray($file, $aA)

chenronting 发表于 2010-10-30 07:40:42

回复 4# netegg


    我顶, 这是个好方法。

afan 发表于 2010-10-30 13:06:05

这个用正则简单极了Local $File = '1.txt', $str = FileRead($File), $hq = '行前添加的字符'
Local $str1 = StringRegExpReplace($str, '([^\r\n]+)', $hq & '$1')
FileDelete($File)
If FileWrite($File, $str1) Then ShellExecute($File)

elexy 发表于 2010-10-30 13:50:27

afan的正则已经用到走火入魔的程度了

ghl781258 发表于 2010-10-30 17:34:54

神了噢噢噢噢
页: [1]
查看完整版本: [已解决]请教高手如何将某个文本文件的每一行加上一串内容