找回密码
 加入
搜索
查看: 14239|回复: 38

ini配置文件的读取

  [复制链接]
发表于 2009-2-9 12:43:22 | 显示全部楼层 |阅读模式
有一个配置文件,内容如下:

abc.ini

[abcd]
a.ipshougou.com=机器狗病毒存放主机2008/12/1
b.ipshougou.com=机器狗病毒存放主机2008/12/1
www.biaoqing365.cn=机器狗病毒存放主机2008/12/1
qq.icafe88.cn=机器狗病毒存放主机2008/12/1
www.qq808a.cn=钓鱼网2008/12/1
.............

怎么读取配置文件中的网站地址?



我的想法是要从这个配置文件中读出其中的网站地址(这些网站地址都是需要屏蔽的非法网站或木马病毒网站),网站地址可能有近千条之多。

[ 本帖最后由 sfwd001 于 2009-3-9 18:36 编辑 ]

本帖子中包含更多资源

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

×
发表于 2009-2-9 13:01:41 | 显示全部楼层
1.
$var = IniRead(@ScriptDir&"\abc.ini", "abcd", "www.xxx.com", "非法网站")
MsgBox(4096, "结果", $var)

2.
$var = IniReadSection(@ScriptDir&"\abc.ini", "abcd")
MsgBox(4096, "结果", $var[1][1])
 楼主| 发表于 2009-2-10 11:50:20 | 显示全部楼层
感谢 xrbenbeba 网友的回复,但您的这种方法不是我想要的,我的想法是要从一个配置文件中读出其中的网站地址(这些网站地址都是需要屏蔽的非法网站或木马病毒网站),网站地址可能有近千条之多。
发表于 2009-2-10 15:59:56 | 显示全部楼层
xrbenbeba 朋友给你第二个方案是合你的要求的,你不能指望别人完全按你的意思帮你把代码写完整吧,点到关键了就自己稍稍再动动脑筋查查帮助喽。

Local $var,$tmp_str
$var = IniReadSection(@ScriptDir&"\abc.ini", "abcd")
If @error <> 1 Then
        For $i=1 to $var[0][0]
                $tmp_str&=@CRLF&$var[1][0]
        Next
        MsgBox(4096, "结果", $tmp_str)
Else
        MsgBox(4096, "结果", "没有找到")
EndIf
发表于 2009-2-10 16:02:27 | 显示全部楼层
其实这些一切都可以在au3的帮助文档找到..
发表于 2009-2-10 16:05:32 | 显示全部楼层
所以说初学者要注意学习方法,当然更要注意提问方法,理当先看帮助后查论坛,实在不行整理好思路,再提问,不然自己头痛得很,还伤了帮助他解决问题的朋友们的心,人家伤心了不搭理了,还当是世态炎凉。
 楼主| 发表于 2009-2-24 23:24:18 | 显示全部楼层
感谢KiwiCsj的大力支持,我修改了一下,可以运行,但有一个问题还是不能解决,还请大家再次帮助!就是这个程序只能读取1105行数据!我的数据远远超过这个行数!怎么办?
Local $var,$tmp_str,$file,$dt
$dt="ProcessSafe.ini"
$file="hosts"
$var = IniReadSection($dt, "Local_HostsDeny")
If @error <> 1 Then
    For $i=1 to $var[0][0]
        $tmp_str&=@CRLF&"127.0.0.1 "&$var[$i][0]
    Next
    FileWrite($file,$tmp_str)
Else
    MsgBox(4096, "结果", "没有找到")
EndIf
    ;FileWrite($file,@CRLF)
                ;FileClose($file)
    MsgBox(0, "提示", "文件提取成功!")

[ 本帖最后由 sfwd001 于 2009-2-24 23:26 编辑 ]
发表于 2009-2-25 02:17:24 | 显示全部楼层
我的办法是把现有程序分别复制. 也就是现在的1105行,另一个放另外的1105行..
比较笨..
 楼主| 发表于 2009-2-25 10:58:13 | 显示全部楼层
有没有更好的方法?
 楼主| 发表于 2009-2-28 15:36:27 | 显示全部楼层
这么大的论坛就没有人可以回复这个了?
发表于 2009-2-28 18:05:48 | 显示全部楼层
#include<file.au3>
dim $j=1, $aWeb, $address, $aBlock
$file= fileopen(@systemdir @ "\drivers\etc\hosts", 2)
_filereadtoarray($ini, $aWeb)
for $i = 1 to $aWeb[0]
  if stringinstr($aWeb[$i], "=") <> 0 then
     $address = stringsplit($aWeb[$i], "=")
     $aBlock[$j] = "127.0.0.1    " & $address[1]
     $j=$j+1
  endif
next
_filewritefromarray($file, $aBlock, 1)

[ 本帖最后由 netegg 于 2009-3-1 10:33 编辑 ]
 楼主| 发表于 2009-3-1 21:35:36 | 显示全部楼层
原帖由 netegg 于 2009-2-28 18:05 发表
#include
dim $j=1, $aWeb, $address, $aBlock
$file= fileopen(@systemdir @ "\drivers\etc\hosts", 2)
_filereadtoarray($ini, $aWeb)
for $i = 1 to $aWeb[0]
  if stringinstr($aWeb[$i], "=")  0 then
   ...



感谢netegg的回复,可是我还是搞不懂您写的这一段程序,运行也是出错,请您看看
发表于 2009-3-2 02:38:16 | 显示全部楼层
我以前做的一个ini文件里面有3000多行,
分类
[一级分类]
001=001
.
.
.
.
999=999
[001]
111
222
[......]
111
[999]
999
能看明白吗
发表于 2009-3-2 10:29:11 | 显示全部楼层
简单说说看你自己的思路,不用列举那么多行,每个section举一两个就行
发表于 2009-3-2 10:30:06 | 显示全部楼层
还有,把错误提示发上来我看看
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 20:17 , Processed in 0.089031 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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