如何 利用AU3调动目录下所有ini文件关键字内容的位置?[已解决]
本帖最后由 minbiao 于 2010-6-30 16:20 编辑比如:
目录:D:\文件
1.ini
[配置]
00123=12
[信息]
123=24
[参数]
12300=48
如何把目录中所有ini文件的[参数]放在[配置]和[信息]的中间? 也就是得到这样的结果
[配置]
00123=12
[参数]
12300=48
[信息]
123=24
小弟是新生,望各位大大帮帮忙! 谢谢!... 想快就用正则 刚才在看正则的表达式一不小心看到这个:
---------------------------------------------------------------------------
正则表达式学习起来其实是很简单的:
举例1.人=吃饭+睡觉+上班+玩。猪=吃饭+睡觉。代入得:人=猪+上班+玩。移项得:人-玩=猪+上班。 匹配的结果是:不懂玩的人等于会上班的猪!
举例2.男人=吃饭+睡觉+挣钱。猪=吃饭+睡觉。代入得:男人=猪+挣钱。移项得:男人-挣钱=猪。匹配的结果是:男人不挣钱的都是猪。
举例3.女人=吃饭+睡觉+花钱。 猪=吃饭+睡觉。代入得:女人=猪+花钱。移项得:女人-花钱=猪。 匹配的结果是:女人不花钱的都是猪。
举例4.男人+女人=(吃饭+睡觉+挣钱)+(吃饭+睡觉+花钱)=(猪+挣钱)+(猪+花钱)=两头猪。匹配的结果是:男人和女人在一起了就是两头猪。
郁闷中... 如果结构就这么简单,没其它的字段,如下:$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) thankyou! 我试一下! 小弟还有一个问题,
比如:
目录:D:\文件
1.ini
[配置]
00123=12
[信息]
123=24
[参数]
12300=48
如何把目录中所有ini文件的[参数]中的值12300=48写到[配置]中呢?
如果只是处理一个ini文件小弟懂写,但是是整个目录批量做处理就不懂了,对变量还不了解!
希望得到的结果是:
[配置]
00123=12
12300=48
[信息]
123=24
[参数]
12300=48
望各位大大帮帮忙! 谢谢!... 处理一个会写处理多个不就是多个遍历循环吗 $Dir = @ScriptDir & '\文件'
$File = _FileListToArray($Dir, '*.ini', 1)
If @error Then Exit MsgBox(0, 1, @error)
For $i = 1 To $File
$s_File = $Dir & '\' & $File[$i]
$Var = IniRead($s_File, "参数", "12300", "")前面这么写对吗? 按照这个写法, 运行后所有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
$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 #include <File.au3>
$Dir = @ScriptDir & '\文件'
$File = _FileListToArray($Dir, '*.ini', 1)
If @error Then Exit MsgBox(0, 2, @error)
For $i = 1 To $File
$s_File = $Dir & '\' & $File[$i]
$val = IniRead($s_File, "参数", "12300", "")
IniWrite($s_File, "配置", "12300", $val)
Next 太感谢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
$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 照你的意思,无论如何都要 [配置]中存在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
$s_File = $Dir & '\' & $File[$i]
$val = IniRead($s_File, "配置", "12300", "")
If $val <> '48' Then IniWrite($s_File, "配置", "12300", "48")
Next 效率真快啊! 原来是这样! 再再再次谢谢afan ! 原来还可以这样学到了 嘿嘿! afan大大在吗?小弟还有一事请教!
就12# 的代码来说,
能不能先判断出$val <> '48'的文件总量,然后再拿这个总量进行修改呢?
发现$val = '48'的文件就排除
页:
[1]
2