1. 程式人生 > >AutoHotkey如何迴圈讀取ini檔案裡所有section的所有key值

AutoHotkey如何迴圈讀取ini檔案裡所有section的所有key值

IniRead, OutputVar, Filename, Section, Key [, Default]

iniread只能讀取指定section指定key值。在不知道section名稱和key名稱的情況下如何迴圈讀取所有的值?
舉報|2014-05-31 14:57提問者採納
FileSelectFile, file, , , 請選擇ini檔案, ini配置檔案(*.ini) ;選擇檔案 if file= { MsgBox, 0, 錯誤, 您為選擇任何檔案 Reload } sections = FileRead, filecontent, %file% ;載入檔案到變數 StringSplit, line, filecontent, `n, , ;用函式分割變數為陣列
Loop ;迴圈 { if A_Index > %line0% Break content = % line%A_Index% ;賦值當前行 StringReplace, content, content, `r, , All ;替換特殊字元 FSection := RegExMatch(content, "\[.*\]") ;正則表示式匹配section if FSection = 1 ;如果找到 { TSection := RegExReplace(content, "\[(.*)\]""$1") ;正則替換並賦值臨時section $為向後引用 sections = %sections%%TSection%| ;用|串接所有section 方便使用列出
%TSection%keys = } Else { FKey := RegExMatch(content, ".*=.*") ;正則表示式匹配key if FKey = 1 { TKey := RegExReplace(content, "(.*)=.*""$1") ;正則替換並賦值臨時key StringReplace, TKey, TKey, ., _, All TKey2=%Tkey%| %TSection%keys = % %TSection%keys TKey2 ;;用|串接當前section下所有key 方便使用列出 TValue := RegExReplace(content, 
".*=(.*)""$1") ;正則替換並賦值臨時value %TSection%_%TKey%=%TValue% } } } ListVars ;除錯情況 列出所有變數 Pause

需要再把串起來的section\key分割成陣列請使用Stringsplit命令.

原文摘自:http://zhidao.baidu.com/link?url=hwTXNFFnSKHwstBo15cYy6z6zsBIQpUYtepNNg_ifW_Rpl1XtVnTF9qb5oVFRHG6gXOXPAIVZ56LiZbuooAY0dgt69eE0dOmnLKNtrkTay3