vszy 发表于 2010-4-27 00:45:05

[已解决]读取多目录下INI文件内容,并统一执行操作的问题。

本帖最后由 vszy 于 2010-4-27 07:19 编辑

假设条件如下:
总目录soft,内含sys、Media两个目录。这两个目录里都有一个in.ini文件内容分别 如下:
sys下的in.ini:

1=winrar.exe /s
......
......
8=xnafx31_redist.msi /qn


Media下的in.ini:
1=wmformat11sdk.exe /q
......
......
9=QTime.exe /s /v /qn

设想如下在soft目录下写一个setup.au3,使其能读取sys和Media目录下的in.ini文件的内容(当然或许是更多目录下的in.ini),然后按照读取内容依次执行:
RUNWait(@ScriptDir&"\sys\winrar.exe /s")
......
......
RUNWait(@ScriptDir&"\sys\xnafx31_redist.msi /qn")
RUNWait(@ScriptDir&"\Media\wmformat11sdk.exe /q")
......
......
RUNWait(@ScriptDir&"\Media\QTime.exe /s /v /qn")

IniRead 这个命令知道,但用的不精,还有怎么枚举所有目录下的in.ini再把从这些ini文件中获得的值按一定顺序排列,并逐个执行.实在没有头绪.还望大家多多支持!先谢谢各位大侠了!

afan 发表于 2010-4-27 01:38:43

本帖最后由 afan 于 2010-4-27 11:40 编辑

#include <File.au3>
Local $sDir = _FileListToArray(@ScriptDir, '*', 2)
If @error Then Exit Msgbox(48, '错误', '此目录下无文件夹')
Local $i, $x, $inifile, $setup
For $i = 1 To $sDir
        $inifile = $sDir[$i] & '\ini.ini'
        If FileExists($inifile) Then
                $setup = IniReadSection($inifile, 'setup')
                If @Error Then ContinueLoop
                For $x = 1 To $setup
                        ;RunWait(@ScriptDir & '\' & $sDir[$i] & '\' & $setup[$x])
                        MsgBox(0, 0, "RunWait('" & @ScriptDir & '\' & $sDir[$i] & '\' & $setup[$x] & "')")
                Next
        EndIf
Next注意,如果路径含有空格,还需在读取ini文件的值时做插入引号处理。

vszy 发表于 2010-4-27 07:17:06

谢谢老大深夜回帖,幸苦了。
(@ScriptDir & $sDir[$i] & '\' & $setup[$x])
这里少了个 \。其他的应该可以解决了。
再次深表感谢!

afan 发表于 2010-4-27 11:42:32

谢谢老大深夜回帖,幸苦了。
(@ScriptDir & $sDir[$i] & '\' & $setup[$x])
这里少了个 \。其他的应 ...
vszy 发表于 2010-4-27 07:17 http://www.autoitx.com/images/common/back.gif


    没错,的确少了个'\',瞌睡了没仔细检查,呵呵~

woeiwoei 发表于 2010-4-27 13:16:11

我是来赚钱的~~
页: [1]
查看完整版本: [已解决]读取多目录下INI文件内容,并统一执行操作的问题。