找回密码
 加入
搜索
查看: 3297|回复: 9

[AU3基础] 【已解决】一行行读取文本,有什么好方法吗?

  [复制链接]
发表于 2010-12-22 23:09:00 | 显示全部楼层 |阅读模式
本帖最后由 dearmb 于 2011-1-1 21:39 编辑

我原来做的一个vbs脚本,读取这样的文本,主机名与Mac地址的对应关系,如:
pc001    00-0A-EB-AB-92-B0
pc002    00-02-EB-AB-92-B0
……
pc100    00-03-EB-AB-92-B0
先是检测本机mac地址,查找对应的主机名,因为vbs读取文本是按行循环读取的
读取一行之后,我用Split将一行分成两个数组,然后对照
但是AU3语法解释中,FileReadLine 有这样一段话
“从性能的角度来看,一行行读取是一个坏主意,此时“行号” 参数是一个递增值. 这将迫使 AutoIt 从开始重读该文件,直至达到指定的行”
有没有什么更好的办法实现我的要求,要是实在不行的话……只有用FileReadLine 一行一行读文本了……
发表于 2010-12-22 23:58:41 | 显示全部楼层
filereadtoarray
_arraysearch
不知道效率如何
当然如果正则比较熟用正则最合适
发表于 2010-12-23 00:10:50 | 显示全部楼层
没看懂…
要找 00-02-EB-AB-92-B0 的主机名,正则一步到位
(?<=\n|^).+?(?=\h+00-02-EB-AB-92-B0)
 楼主| 发表于 2010-12-23 07:45:58 | 显示全部楼层
本帖最后由 dearmb 于 2010-12-23 07:50 编辑
没看懂…
要找 00-02-EB-AB-92-B0 的主机名,正则一步到位
(?
afan 发表于 2010-12-23 00:10


简单的说,就是我做一个txt,格式是
pc001    AA-AA-AA-AA-AA-AA
pc002    BB-BB-BB-BB-BB-BB
……
pc100    CC-CC-CC-CC-CC-CC
首先自动获取本机的mac地址,得出本机所对应的主机名,然后自动修改主机名,我原本是用vbs实现的,现在想改成au3

(?<=\n|^).+?(?=\h+00-02-EB-AB-92-B0)
这个能解释一下不?我诈一看会以为是乱码的……
发表于 2010-12-23 08:40:05 | 显示全部楼层
用INI存储比较简单啊
发表于 2010-12-23 09:27:42 | 显示全部楼层
本帖最后由 3mile 于 2010-12-23 09:31 编辑

同楼上。如下INI形式,读取MAC,得到主机号
[mac]
AA-AA-AA-AA-AA-AA=pc001
BB-BB-BB-BB-BB-BB=pc002
……
CC-CC-CC-CC-CC-CC=pc100
或如2楼思路。_filereadtoarray读入数组。
 楼主| 发表于 2010-12-23 17:21:45 | 显示全部楼层
感谢各位,读取ini可以满足我的要求且实现简单~~
发表于 2010-12-23 17:35:35 | 显示全部楼层
本帖最后由 xowen 于 2010-12-23 17:43 编辑

一行一行度效率也不高,虽然不明白意思,但是似乎可以用以下方式提高效率:
1、先将TXT中的文本格式化:使用StringReplace将@CRLF替换成一个字符,这样文本中不具备回车。
2、然后在分成N个字符串:使用StringSplit按照替换的@CRLF字符分段。
3、然后在每个字符串中匹配,这样速度应该会快。
用这个匹配计算机名:(\w*?)\s+
发表于 2010-12-23 18:43:13 | 显示全部楼层
呵呵, INI是好啊,规范
 楼主| 发表于 2010-12-23 19:14:26 | 显示全部楼层
一行一行度效率也不高,虽然不明白意思,但是似乎可以用以下方式提高效率:
1、先将TXT中的文本格式化:使 ...
xowen 发表于 2010-12-23 17:35


决定用ini了,怎么都觉得简单
你说的方法应该也行,不过我需要把公司大概2000台机器做到这个对应表里,用你的方法会不会也很慢,呵呵,不知道了,反正决定ini了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 20:29 , Processed in 0.095237 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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