找回密码
 加入
搜索
查看: 2484|回复: 2

[AU3基础] 批次读取txt档里的特定字串数值 再输出csv档

[复制链接]
发表于 2015-2-13 00:33:46 | 显示全部楼层 |阅读模式
大致流程如下,有多个以.log结尾的txt档
想先读取log1里面A後面的变数跟B後面的变数,存进array
接下来再读取log2,进行一样的动作
假设读完100做txt档後,再一次输出成一个csv档,并照固定的栏位排列
log1.log
==
A:1
B:2

log2.log
==
A:3
B:4

log.csv
==
      A   B
log1  1   2
log2  3   4
==

要实现这个内容应该会用到这两个函式吧?
_FileReadToArray
_FileWriteFromArray
另外要批次读取txt档是用哪做函式,可否指教一下?
是否有简单处理两个txt档的范例可参考?
感激不尽!
发表于 2015-2-13 18:26:42 | 显示全部楼层

;生成测试log文件
Dim $i
Dim $logfilename
Dim $fhandle
Dim $buf
Dim $sc_path
$sc_path = @ScriptDir
If StringRight($sc_path, 1) <> "\" Then $sc_path &=  "\" 
For $i = 1 To 100
        $logfilename = "log" & $i & ".log"
        $fhandle = FileOpen($sc_path & $logfilename, 10)
        $buf = "A:" & Random(1, 10, 1) & @CRLF
        $buf &= "B:" & Random(1, 10, 1) & @CRLF
        FileWrite($fhandle, $buf)
        FileClose($fhandle)
Next
MsgBox(0, "测试用log文件已生成", "")



;提取log文件输出csv
Dim $i
Dim $logfilename
Dim $fhandle
Dim $buf
Dim $sc_path
Dim $var_a
Dim $var_b
Dim $csv
$sc_path = @ScriptDir
If StringRight($sc_path, 1) <> "\" Then $sc_path &=  "\" 
$csv = ",A,B" & @CRLF

For $i = 1 To 100
        $logfilename = "log" & $i & ".log"
        $fhandle = FileOpen($sc_path & $logfilename, 0)
        $buf = FileRead($fhandle)
        FileClose($fhandle)
        $n = StringRegExp($logfilename, ".+?(?=\.)", 3)
        $csv &=  $n[0] & ","
        $n = StringRegExp($buf, "(?<=:).*?(?=\s)", 3)
        $csv &=  $n[0] & "," & $n[1] & @CRLF
Next
$fhandle = FileOpen($sc_path & "log.csv", 10)
FileWrite($fhandle, $csv)
FileClose($fhandle)
MsgBox(0, "提取文件完成", "")

评分

参与人数 1金钱 +10 收起 理由
骗子 + 10

查看全部评分

发表于 2015-2-13 18:34:12 | 显示全部楼层
[img][/img]

本帖子中包含更多资源

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

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 16:36 , Processed in 0.077421 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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