[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
Ссылки на разные темы, обсуждения и т.п. , шапку потом поправлю.

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
Зарезервирована

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
nikzzzz,
aa
Даже не знаю в этой ли теме пишу или нет, нужно вывести в консоль все параметр=значение определенной секции в ini файле
с помощью cAu3.exe
[Reg]
Reg1=Значение
Reg2=Значение
Возможно это?
cAu3.exe "IniReadSection('Old.ini','Reg')"

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
loban_ser,
74459Возможно это?
Нет, cAu3 не поддерживает двухмерные массивы, может добавлю.
Но данная задача может быть решена с помощью StringRegExp ().

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
nikzzzz,
Можно пример?

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
loban_ser
Нет, схода не напишу, могу только сказать, как это сделать.
Сначала, с помощью StringRegExpReplace() получаем содержимое секции [Reg], затем получаем нужный массив с помощью StringRegExp ().
В принципе, задачка не сложная, но регулярные выражения требуют аккуратности, написать в слепую очень сложно, я обычно пользуюсь отладчиком.
Может, попозже напишу пример.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
loban_ser, вы можете посмотреть рег.выр. тут, и есть ещё на официальном сайте аналог. Но я делал для версии 3.3.8.1, а для последних ищите анализатор на оф.форуме. По крайне мере ничего сложного в плане алгоритма: найти секцию, потом любой текст до переноса строки в начале которой будет открывающая скобка или конец файла, типа (?s)[\r\n]\s*\[Reg\]/K(.+?)(?=[\r\n]+\[|\z)

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
loban_ser
Обновил утилиту, теперь
74459cAu3.exe "IniReadSection('Old.ini','Reg')"
должно работать.

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
nikzzzz,
Отлично!
То, что нужно ay
D:\USBTOR\RePack\RePack\Binary\Files>for /f "tokens=1,2,3 delims==" %a in ('"cAu3.exe IniReadSection('WinPe.ini','Reg') /da:'=' /i:1"') do echo %a %b %c
D:\USBTOR\RePack\RePack\Binary\Files>echo System Reg1 Значение
System Reg1 Значение
D:\USBTOR\RePack\RePack\Binary\Files>echo Software Reg2 Значение
Software Reg2 Значение

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
Как быть если в параметре и значении присутствуют пробелы?

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
loban_ser,
74498Как быть если в параметре и значении присутствуют пробелы?
for /f "tokens=1,* delims==" %a in ('"cAu3.exe IniReadSection('WinPe.ini','Reg') /da:'=' /i:1"') do echo %a=%b

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
nikzzzz,
aa
Будет ли верна такая конструкция?
for /f "delims=" %%a in ('2^>nul dir /s /b /a:-d "%#Path%"') do cAu3.exe "_FileWrite('%%a',StringReplace(_FileRead('%%a',FileGetEncoding('%%a')),'%~1','%~2'),FileGetEncoding('%%a')+2)" >NUL
Вместо:
for /f "delims=" %%a in ('2^>nul dir /s /b /a:-d "%#Path%"') do cAu3.exe "_FileWrite('%%a',StringReplace(_FileRead('%%a',0),'%~1','%~2'),512+2)" >NUL
Я так понимаю, что вторая сохраняет файлы в анси кодировке, независимо какя кодировка у них до этого была, а если нужно оставить кодировку неизменной то луше будет первый вариант?
Или я не прав. ah

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
loban_ser, aa
Не сомненно, первый вариант более правильный. ab

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
nikzzzz, az

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
В принципе, можно его сократить до
for /f "delims=" %%a in ('2^>nul dir /s /b /a:-d "%#Path%"') do cAu3.exe "_FileWrite('%%a',StringReplace(_FileRead('%%a',0),'%~1','%~2'),FileGetEncoding('%%a')+2)" >NUL
При чтении кодировка и так автоматом определяется.

Страница 1 из 2


Показать сообщения:    

Текущее время: 28-Мар 20:17

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы