找回密码
 加入
搜索
楼主: waxy

[AU3基础] [已解决]读取文本文件使用通配符问题

 火.. [复制链接]
发表于 2010-5-7 12:28:52 | 显示全部楼层
如果是用Au3调用RunWait()运行BCI那就是在源头就错了…… LZ不会犯这种错误吧?
发表于 2010-5-7 12:58:13 | 显示全部楼层
回复  afan
可以查找其他类型的文件吗?如 .doc文档,对中文支持可以吗?我尝试了该代码,均无法找到文件啊!比 ...
newuser 发表于 2010-5-7 12:27



    全盘搜索需先获取所有盘符,再逐盘搜索。搜索文件可用阿福写的函数。在UDF区找下
发表于 2010-5-7 13:01:32 | 显示全部楼层
回复 17# afan
我找找,谢谢!
 楼主| 发表于 2010-5-7 14:57:19 | 显示全部楼层
回复  waxy


    log文件名在同机不会改变文件名吧?直接将2#前4行代码替换成 $file = 'log文件完整路 ...
afan 发表于 2010-5-7 11:40

afan,LOG文件名在当次运行结束之前不会改变,直接使用'log文件完整路径名' ,也需要BIC进度结束以后才显示结果。
发表于 2010-5-7 15:10:23 | 显示全部楼层
1,BIC是Au3调用Run()运行的吗?
2,每次运行BIC都会生成一个新文件名的log文件?
3,log文件是否即时生成数据(手动查看)?还是等到BIC结束时才有数据?
 楼主| 发表于 2010-5-7 15:10:39 | 显示全部楼层
本帖最后由 waxy 于 2010-5-7 15:13 编辑

我想了个笨办法(可以解决“BIC关闭才显示结果”的问题),但循环中的filecopy只能执行一次,只在BIC的LOG文件中已经出现“lile"字符串才有效;
也就是说“lile"字符串在脚本运行之后出现,脚本则无法找到“lile"字符串再输出结果。代码如下,大家再帮忙看看吧。多谢!
Local $search = FileFindFirstFile('BIC_log*.log')
;If $search = -1 Then Exit MsgBox(48, 0, '未搜索到')
Local $file = FileFindNextFile($search)
;Msgbox(0, 0, $file)
FileClose($search)
While 1
        FileCopy($file,"BIC_ERR.log")
                Local $BIC=("BIC_ERR.log")
                Local $a = FileRead($BIC)
        If StringRegExp($a, 'lile') Then ExitLoop MsgBox(64, "错误...", '出错了!')
        Sleep(2000)
WEnd
 楼主| 发表于 2010-5-7 15:24:59 | 显示全部楼层
如果是用Au3调用RunWait()运行BCI那就是在源头就错了…… LZ不会犯这种错误吧?
afan 发表于 2010-5-7 12:28

呵呵,当然不会犯这种低级错误,我现在是手动运行BCI的。
 楼主| 发表于 2010-5-7 15:33:17 | 显示全部楼层
1,BIC是Au3调用Run()运行的吗?
2,每次运行BIC都会生成一个新文件名的log文件?
3,log文件是否即时生成 ...
afan 发表于 2010-5-7 15:10

1.先手动运行BIC,再运行脚本(也尝过先运行脚本再运行BIC)。
2.为了防止LOG日志被覆盖,BCI每次运行时都会产生一个新LOG文件,只前7位相同。
3.BIC系统一运行即产生LOG文件,之后把运行的情况实时纪录。
发表于 2010-5-7 15:41:05 | 显示全部楼层
BCI每次运行时都会产生一个新LOG文件,只前7位相同。 ...
waxy 发表于 2010-5-7 15:33


那岂不是有很多log?那样的话脚本读取的就不一定是最新的log文件了
 楼主| 发表于 2010-5-7 16:03:37 | 显示全部楼层
那岂不是有很多log?那样的话脚本读取的就不一定是最新的log文件了
afan 发表于 2010-5-7 15:41

因为现在是在做试验,所以每次运行BIC之前,我都会把原来的LOG文件删除。这个问题解决之后,再使用AU3直接运行BIc,只要在运行BIC之前执行一次删除LOG文件的动作应该就可以了。
发表于 2010-5-7 16:29:29 | 显示全部楼层
把你21#的第7行改为 FileCopy($file,"BIC_ERR.log", 1) 试试
按说能复制就应该也能读取。。。
 楼主| 发表于 2010-5-7 17:23:44 | 显示全部楼层
本帖最后由 waxy 于 2010-5-7 17:25 编辑
把你21#的第7行改为 FileCopy($file,"BIC_ERR.log", 1) 试试
按说能复制就应该也能读取。。。
afan 发表于 2010-5-7 16:29

呵呵,版主就是版主,佩服!可以了!我知道问题出在哪了,脚本最初复制的LOG文件是BIC系统没出错的LOG文件,故无“LILE”字符串,之后的执行的复制动作并没前成功(因为已经存在一个同名的LOG文件),这样脚本就限入死循环了。呵呵,也怪我粗心,之前我有想到在复制文件之前加了一删除动作(加删除命令不行),就是没想到在FileCopy后面加“标志”。
     不过,脚本一定要在BCI系统启动之后执行,否则也是不成功的,不知道为什么脚本在执行时只要第一次没找到'BIC_log*.log'也会限入死循环。再次感谢afan的帮忙!谢谢!
发表于 2010-5-7 17:25:25 | 显示全部楼层
本帖最后由 C.L 于 2010-5-7 17:29 编辑

网页打开实在是有点慢,几分钟都没回复得一个贴,我晕~
 楼主| 发表于 2010-5-7 17:42:28 | 显示全部楼层
网页打开实在是有点慢,几分钟都没回复得一个贴,我晕~
C.L 发表于 2010-5-7 17:25


我正想问题版主这个问题,每天到下午4点之后,登录论坛也好看贴、回贴都像蜗牛一样。
发表于 2010-5-7 17:46:30 | 显示全部楼层
呵呵,版主就是版主,佩服!可以了!我知道问题出在哪了,脚本最初复制的LOG文件是BIC系统没出错的LOG文件 ...
waxy 发表于 2010-5-7 17:23


你的代码,在BIC没运行之前,$file这个文件名是不存在的,而你带着这个不存在的$file进入了循环,
当前会进入死循环。
解决的办法是,用循环来检查这个$file,如果$file存在了,再进入检查"lile"的循环就不会进入死循环了
类似:
While Not $file
        $search = FileFindFirstFile('BIC_log*.log')
        $file = FileFindNextFile($search)
        ToolTip ($file)
        Sleep (1000)
WEnd
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-12 15:46 , Processed in 0.074928 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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