1

Тема: AHK: Чтение одной секции всех одинаковых ключей в ini файле

Привет.
Как прочитать в одной секции все ключи одного типа "Path"
Цель, чтоб при чтении ini файла, удалялись файлы, которые прописаны в ключах "Path" в секции, например "Trash".

2

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

А что вы понимаете под «типом» ключа? Если это название ключа, то в одной секции стандартного ini-файла не может быть нескольких ключей с одинаковым названием.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: Logonius, 2022-06-09 16:39:45)

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

teadrinker

То есть вот так >>>

[Trash]
Path=1
Path=2

Не может быть?

4 (изменено: Logonius, 2022-06-09 16:52:16)

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

Вот пример кода, только для txt.


Loop, read, 1.txt
{
    Loop, parse, A_LoopReadLine, %A_Tab%
    {
        FileDelete, %A_LoopReadLine%
    }
}

Как сделать то же самое, только чтоб читал ini и только одну, всю секцию "Trash" и все ключи которые там (пути к файлам), удалил.
Потом будут другие секции там же, их потом по другому нужно прочитать и сделать другие действия с файлами.

5

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

Logonius пишет:

Не может быть?

Создать такую секцию можно, но обычно так не делается. Во всяком случае, это будет нестандартный ini-файл.
Чтобы прочитать секцию целиком, есть команда

IniRead, OutputVarSection, Filename, Section
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

Можно, пожалуйста пример, чтения и удаление всех файлов в ключах, path1=/path2=и т.д.

7

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

teadrinker пишет:

Чтобы прочитать секцию целиком, есть команда

Хотя, если файл нестандартный, я бы лучше читал регуляркой. Предположим есть ini:

[Files]
Path=C:\test0.txt
Path=D:\test0.exe
[Trash]
Path=C:\test.txt
Path=D:\test.exe
[Sect]
Path=C:\test2.txt
Path=D:\test2.exe

Ключи Path из секции Trash можно прочитать так:

filePath := A_Desktop . "\test.ini" ; указать правильный путь
section := "Trash"
key := "Path"
FileRead, text, % filePath
m := ""
while RegExMatch(text, "isO)(?:(?:^|\R)\[" . section . "]|(?!^)\G)(?:(?!\R\[|\s*$).)*?\K\R" . key . "=(\V+)", m, m ? m.Pos + m.Len : 1)
   MsgBox, % m[1]

Как удалить прочитанные пути, надеюсь, догадаетесь.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8 (изменено: Logonius, 2022-06-09 17:32:15)

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

Этот код читает секцию целиком, но и вместе с ключами, а мне не нужно чтоб он читал "path=" все что после нужно читать и передавать.

IniRead, OutputVarSection, Filename, Section

Тут regex нужно использовать?

UPD: поздно написал), сейчас попробую, спасибо.

9

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

Спасибо большое, работает, еще предстоит разобрать все строки, чтоб понять), особенно RegExMatch.

10

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

Ну или чтобы регулярка попроще была, то можно так:

filePath := A_Desktop . "\test.ini" ; указать правильный путь
section := "Trash"
key := "Path"
IniRead, pairs, % filePath, % section
m := ""
while RegExMatch(pairs, "`amiO)^" . key . "=\K\V+", m, m ? m.Pos + m.Len : 1)
   MsgBox, % m[0]
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Чтение одной секции всех одинаковых ключей в ini файле

Шедевр, еще раз спасибо.