找回密码
 加入
搜索
查看: 7249|回复: 24

[AU3基础] 如何 利用AU3调动目录下所有ini文件关键字内容的位置?[已解决]

 火.. [复制链接]
发表于 2010-6-21 21:02:42 | 显示全部楼层 |阅读模式
本帖最后由 minbiao 于 2010-6-30 16:20 编辑

比如:
目录:D:\文件
1.ini
[配置]
00123=12
[信息]
123=24
[参数]
12300=48

如何把目录中所有ini文件的[参数]放在[配置]和[信息]的中间? 也就是得到这样的结果

[配置]
00123=12
[参数]
12300=48
[信息]
123=24

小弟是新生,望各位大大帮帮忙! 谢谢!...

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-6-21 22:00:34 | 显示全部楼层
想快就用正则
 楼主| 发表于 2010-6-21 22:10:49 | 显示全部楼层
刚才在看正则的表达式  一不小心看到这个:
---------------------------------------------------------------------------
正则表达式学习起来其实是很简单的:

举例1.人=吃饭+睡觉+上班+玩。猪=吃饭+睡觉。代入得:人=猪+上班+玩。移项得:人-玩=猪+上班。 匹配的结果是:不懂玩的人等于会上班的猪!

举例2.男人=吃饭+睡觉+挣钱。猪=吃饭+睡觉。代入得:男人=猪+挣钱。移项得:男人-挣钱=猪。匹配的结果是:男人不挣钱的都是猪。   

举例3.女人=吃饭+睡觉+花钱。 猪=吃饭+睡觉。代入得:女人=猪+花钱。移项得:女人-花钱=猪。 匹配的结果是:女人不花钱的都是猪。   

举例4.男人+女人=(吃饭+睡觉+挣钱)+(吃饭+睡觉+花钱)=(猪+挣钱)+(猪+花钱)=两头猪。匹配的结果是:男人和女人在一起了就是两头猪。



郁闷中...
发表于 2010-6-21 22:43:25 | 显示全部楼层
如果结构就这么简单,没其它的字段,如下:
$Str = _
                '[配置]' & @CRLF & _
                '00123=12' & @CRLF & _
                '[信息]' & @CRLF & _
                '123=24' & @CRLF & _
                '[参数]' & @CRLF & _
                '12300=48' & @CRLF
Msgbox(0, '原字符串', $str)
$str = StringRegExpReplace($str, '(?s)(\[信息\].+)(\[参数\].+)', '$2$1')
Msgbox(0, '更换位置', $str)
 楼主| 发表于 2010-6-21 23:23:15 | 显示全部楼层
thankyou! 我试一下!
 楼主| 发表于 2010-6-22 00:29:16 | 显示全部楼层
小弟还有一个问题,
比如:
目录:D:\文件
1.ini
[配置]
00123=12
[信息]
123=24
[参数]
12300=48

如何把目录中所有ini文件的[参数]中的值12300=48写到[配置]中呢?
如果只是处理一个ini文件小弟懂写,但是是整个目录批量做处理就不懂了,对变量还不了解!

希望得到的结果是:
[配置]
00123=12
12300=48
[信息]
123=24
[参数]
12300=48

望各位大大帮帮忙! 谢谢!...
发表于 2010-6-22 00:37:58 | 显示全部楼层
处理一个会写处理多个不就是多个遍历循环吗
 楼主| 发表于 2010-6-22 00:58:02 | 显示全部楼层
$Dir = @ScriptDir & '\文件'
$File = _FileListToArray($Dir, '*.ini', 1)
If @error Then Exit MsgBox(0, 1, @error)
For $i = 1 To $File[0]
        $s_File = $Dir & '\' & $File[$i]
        $Var = IniRead($s_File, "参数", "12300", "")
前面这么写对吗?
 楼主| 发表于 2010-6-22 12:44:58 | 显示全部楼层
按照这个写法, 运行后所有ini最后只剩下48了....  
小弟不才望指教!
#include <File.au3>
$Dir = @ScriptDir & '\文件'
$File = _FileListToArray($Dir, '*.ini', 1)
If @error Then Exit MsgBox(0, 2, @error)
For $i = 1 To $File[0]
        $s_File = $Dir & '\' & $File[$i]
        $ini = IniRead($s_File, "参数", "12300", "")
        For $ii = 1 To $ini
                   $ini = IniWrite (  $s_File, "配置", "12300", $ini )
        Next
        $fo = FileOpen($s_File, 2)
        FileWrite($fo, $ini)
        FileClose($fo)
Next
发表于 2010-6-22 15:21:44 | 显示全部楼层
#include <File.au3>
$Dir = @ScriptDir & '\文件'
$File = _FileListToArray($Dir, '*.ini', 1)
If @error Then Exit MsgBox(0, 2, @error)
For $i = 1 To $File[0]
        $s_File = $Dir & '\' & $File[$i]
        $val = IniRead($s_File, "参数", "12300", "")
        IniWrite($s_File, "配置", "12300", $val)
Next
 楼主| 发表于 2010-6-22 22:23:06 | 显示全部楼层
太感谢afan了!  呵呵!
我还想问一下,如果我想做个检测,在所有ini的[配置]中存在12300=48就不进行操作,不正确或不存在则修改该成48,我自己写了一个但是没成功,望指点
#include <File.au3>
$Dir = @ScriptDir & '\文件'
$File = _FileListToArray($Dir, '*.ini', 1)
If @error Then Exit MsgBox(0, 2, @error)
For $i = 1 To $File[0]
        $s_File = $Dir & '\' & $File[$i]
        $val = IniRead($s_File, "配置", "12300", "")
                        For $ii = 1 To $val
                                if $ii = "48" then 
                                          exit
else
    IniWrite($s_File, "配置", "12300", "48")
        Exit
EndIf
        Next
Next
发表于 2010-6-22 22:34:04 | 显示全部楼层
照你的意思,无论如何都要 [配置]中存在12300=48,不用判断直接 IniWrite()之不就完了?如果已存在12300=xx 就跳过才有判断的必要吧。
要判断也行:
#include <File.au3>
$Dir = @ScriptDir & '\文件'
$File = _FileListToArray($Dir, '*.ini', 1)
If @error Then Exit MsgBox(0, 1, @error)
For $i = 1 To $File[0]
        $s_File = $Dir & '\' & $File[$i]
        $val = IniRead($s_File, "配置", "12300", "")
        If $val <> '48' Then IniWrite($s_File, "配置", "12300", "48")
Next
 楼主| 发表于 2010-6-22 22:42:18 | 显示全部楼层
效率真快啊! 原来是这样! 再再再次谢谢afan !
发表于 2010-6-23 09:57:56 | 显示全部楼层
原来还可以这样学到了
 楼主| 发表于 2010-6-24 14:52:36 | 显示全部楼层
嘿嘿! afan大大在吗?  小弟还有一事请教!
就12# 的代码来说,  

能不能先判断出$val <> '48'的文件总量,然后再拿这个总量进行修改呢?
发现$val = '48'的文件就排除
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-1 12:14 , Processed in 0.086071 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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