找回密码
 加入
搜索
查看: 4795|回复: 13

[AU3基础] 在文本文件中读取特定字符串并存入另外文本中

 火.. [复制链接]
发表于 2010-4-27 12:57:59 | 显示全部楼层 |阅读模式
本帖最后由 xwlzx 于 2010-4-27 13:01 编辑

请大家帮助解决!谢谢!

例子:
比如待读取的文本文件内容如下:

复习提纲</a></li><li><span>219.88 KB</span><a href='/down/2009-12/26/306934.shtml' target="_blank">·2010年高考物理热点:直线运动问题</a></li><li><span>151.77 KB</span><a href='/down/2009-12/24/306162.shtml' target="_blank">·四川省绵阳南山中学2010届高三物理练习卷(3):直线运动</a></li><li><span>124.40 KB</span><a href='/down/2009-11/27/295265.shtml' target="_blank">·ks5u2010届高考二轮复习跟踪测试(物理):直线运动(二)</a></li><li><span>327.25 KB</span><a href='/down/2009-11/17/290714.shtml' target="_blank">·2010届高考物理二轮复习系列课件35:直线运动规律的运用</a></li><li><span>209.08 KB</span><a href='/down/2009-11/17/290664.shtml' target="_blank">·2010届高考物理二轮复习系列课件02:直线运动的基本规律</a></li><li><span>113.45 KB</span><a href='/down/2009-11/17/290663.shtml' target="_blank">·2010届高考物理二轮复习系列课件01:直线运动的基本概念</a></li><li><span>110.54 KB</span><a href='/down/2009-11/13/288692.shtml' target="_blank">·ks5u物理知识点优化训练:直线运动</a></li><li><span>188.79 KB</span><a href='/down/2009-11/4/285573.shtml' target="_blank">·ks5u2010届高考二轮复习跟踪测试(物理):直线运动(一)</a></li><li><span>457.84 KB</span><a href='/down/2009-11/2/285087.shtml' target="_blank">·KS5U2010高考二轮复习物理考案(2)力与物体的直线运动</a></li><li><span>233.82 KB</span><a href='/down/2009-11/2/285078.shtml' target="_blank">·KS5U2010高考二轮复习物理教案(2)力与物体的直线运动</a></li><li><span>59.31 KB</span><a href='/down/2009-10/11/277845.shtml'

需读取的字符串为.shtml前面的六位数字,比如290714.shtml前面的290714,文件中有几个就读取几个并将其一行行地存入另外一个文本文件内

形式如下:
306162
295265
290714
...
...
...

限于我水平有限,请高手指教!谢谢!
发表于 2010-4-27 13:03:14 | 显示全部楼层
$sR = StringRegExp($str, '\d{6}(?=\.shtml)', 3)
发表于 2010-4-27 13:10:24 | 显示全部楼层
恩那 正则~~~
 楼主| 发表于 2010-4-27 13:19:07 | 显示全部楼层
谢谢!代码能否写的完整一些,包括读取和写入!谢谢!
发表于 2010-4-27 13:25:09 | 显示全部楼层
Local $Str = '复习提纲</a></li><li><span>219.88 KB</span><a href=' & "'" & '/down/2009-12/26/306934.shtml' & "'" & ' target="_blank">·2010年高考物理热点:直线运动问题</a></li><li><span>151.77 KB</span><a href=' & "'" & '/down/2009-12/24/306162.shtml' & "'" & ' target="_blank">·四川省绵阳南山中学2010届高三物理练习卷(3):直线运动</a></li><li><span>124.40 KB</span><a href=' & "'" & '/down/2009-11/27/295265.shtml' & "'" & ' target="_blank">·ks5u2010届高考二轮复习跟踪测试(物理):直线运动(二)</a></li><li><span>327.25 KB</span><a href=' & "'" & '/down/2009-11/17/290714.shtml' & "'" & ' target="_blank">·2010届高考物理二轮复习系列课件35:直线运动规律的运用</a></li><li><span>209.08 KB</span><a href=' & "'" & '/down/2009-11/17/290664.shtml' & "'" & ' target="_blank">·2010届高考物理二轮复习系列课件02:直线运动的基本规律</a></li><li><span>113.45 KB</span><a href=' & "'" & '/down/2009-11/17/290663.shtml' & "'" & ' target="_blank">·2010届高考物理二轮复习系列课件01:直线运动的基本概念</a></li><li><span>110.54 KB</span><a href=' & "'" & '/down/2009-11/13/288692.shtml' & "'" & ' target="_blank">·ks5u物理知识点优化训练:直线运动</a></li><li><span>188.79 KB</span><a href=' & "'" & '/down/2009-11/4/285573.shtml' & "'" & ' target="_blank">·ks5u2010届高考二轮复习跟踪测试(物理):直线运动(一)</a></li><li><span>457.84 KB</span><a href=' & "'" & '/down/2009-11/2/285087.shtml' & "'" & ' target="_blank">·KS5U2010高考二轮复习物理考案(2)力与物体的直线运动</a></li><li><span>233.82 KB</span><a href=' & "'" & '/down/2009-11/2/285078.shtml' & "'" & ' target="_blank">·KS5U2010高考二轮复习物理教案(2)力与物体的直线运动</a></li><li><span>59.31 KB</span><a href=' & "'" & '/down/2009-10/11/277845.shtml' & "'" & ' '
;MsgBox(0, '原字符串', $Str)
Local $sR = StringRegExp($Str, '\d{6}(?=\.shtml)', 3)
If @error Then Exit MsgBox(0, 0, @error)
Local $txt, $i
For $i = 0 To UBound($sR) - 1
        $txt &= $sR[$i] & @CRLF
Next
FileWrite('test.txt', $txt)
ShellExecute('test.txt')
 楼主| 发表于 2010-4-27 15:06:32 | 显示全部楼层
本帖最后由 xwlzx 于 2010-4-27 16:50 编辑

谢谢!学习一下!这代码是事先已给一变量赋值,如果从一个文本文件中读取过来,情况应该会有所不同吧!
发表于 2010-4-27 16:07:49 | 显示全部楼层
谢谢!学习了....
发表于 2010-4-27 17:39:06 | 显示全部楼层
回复 5# afan

学习了,谢谢!
发表于 2010-4-27 17:42:51 | 显示全部楼层
谢谢!学习一下!这代码是事先已给一变量赋值,如果从一个文本文件中读取过来,情况应该会有所不同吧!
xwlzx 发表于 2010-4-27 15:06
$str = FileRead('文本文件')
如有不懂可上传文本文件范本~
 楼主| 发表于 2010-4-27 17:45:51 | 显示全部楼层
本帖最后由 xwlzx 于 2010-4-27 17:47 编辑

谢谢!在您的指导下,已弄明白了!
$file = FileOpen("jy.txt", 0)
; 检查打开的文件是否可读
If $file = -1 Then
        MsgBox(0, "错误", "不能打开文件.")
        Exit
EndIf
; 每次读取一行文本,直到文件结束.
Local $Str
While 1
        $line = FileReadLine($file)
        If @error = -1 Then ExitLoop
        $Str &=$line
Wend
FileClose($file)
Local $sR = StringRegExp($Str, '\d{6}(?=\.shtml)', 3)
If @error Then Exit MsgBox(0, 0, @error)
Local $txt, $i
For $i = 0 To UBound($sR) - 1
        $txt &= $sR[$i] & @CRLF
Next
FileWrite('test.txt', $txt)
ShellExecute('test.txt')
发表于 2010-4-27 18:39:44 | 显示全部楼层
回复 10# xwlzx


    为什么要逐行读出来啊?直接 $str = FileRead('jy.txt') 不行吗?
 楼主| 发表于 2010-4-28 09:22:28 | 显示全部楼层
回复 11# afan
谢谢!又学习一招了!其先我还以为直接读取不行呢!现在明白了!谢谢!
 楼主| 发表于 2010-4-28 15:28:00 | 显示全部楼层
谢谢!最终成品如下:
$array=StringSplit(@ScriptName, '.')
FileDelete($array[1] & '.html')
$search = FileFindFirstFile("*.txt")
If $search = -1 Then
        MsgBox(64, "错误", "当前目录没有可用的.txt文件", 5)
        Exit
EndIf
FileWrite($array[1] & '.html', '<body> <BR>')
While 1
        $Nfile = FileFindNextFile($search)
        If @error Then ExitLoop
        $file = FileOpen($Nfile, 0)
        If $file = -1 Then
                MsgBox(0, "错误", "不能打开文件.")
                Exit
        EndIf
        Local $Str
        While 1
                $line = FileReadLine($file)
                If @error = -1 Then ExitLoop
                $Str &= $line
        WEnd
        FileClose($file)
        Local $sR = StringRegExp($Str, '\d{6}(?=\.shtml)', 3)
        If @error Then Exit MsgBox(0, 0, @error)
        Local $txt, $i
        For $i = 0 To UBound($sR) - 1
                $txt = '<a' & ' href="http://www.ks5u.com/downsch.asp?id=' & $sR[$i] & '"' & ' /a>' & '链接' & $sR[$i] & '<BR>'
                FileWrite($array[1] & '.html', $txt)
        Next
WEnd
FileWrite($array[1] & '.html', '</body>')
ShellExecute($array[1] & '.html')
发表于 2010-4-30 11:45:57 | 显示全部楼层
学习。。。。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-3 09:01 , Processed in 0.086590 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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