[Quote]

    nikzzzz
  • 215
  • Longevity: 5 years 6 months
  • Posts: 3246
  • REPUTATION:127

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

[Quote]

    nikzzzz
  • 215
  • Longevity: 5 years 6 months
  • Posts: 3246
  • REPUTATION:127

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

[Quote]

    loban_ser
  • 17796
  • Longevity: 2 years 5 months
  • Posts: 443
  • REPUTATION:10

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

[Quote]

    nikzzzz
  • 215
  • Longevity: 5 years 6 months
  • Posts: 3246
  • REPUTATION:127

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

[Quote]

    loban_ser
  • 17796
  • Longevity: 2 years 5 months
  • Posts: 443
  • REPUTATION:10

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

[Quote]

    nikzzzz
  • 215
  • Longevity: 5 years 6 months
  • Posts: 3246
  • REPUTATION:127

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

[Quote]

    AZJIO
  • 17953
  • Longevity: 2 years 5 months
  • Posts: 457
  • REPUTATION:56

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

[Quote]

    nikzzzz
  • 215
  • Longevity: 5 years 6 months
  • Posts: 3246
  • REPUTATION:127

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

[Quote]

    loban_ser
  • 17796
  • Longevity: 2 years 5 months
  • Posts: 443
  • REPUTATION:10

    [+] [-]
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 Значение

[Quote]

    loban_ser
  • 17796
  • Longevity: 2 years 5 months
  • Posts: 443
  • REPUTATION:10

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

[Quote]

    nikzzzz
  • 215
  • Longevity: 5 years 6 months
  • Posts: 3246
  • REPUTATION:127

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

[Quote]

    loban_ser
  • 17796
  • Longevity: 2 years 5 months
  • Posts: 443
  • REPUTATION:10

    [+] [-]
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

[Quote]

    nikzzzz
  • 215
  • Longevity: 5 years 6 months
  • Posts: 3246
  • REPUTATION:127

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

[Quote]

    loban_ser
  • 17796
  • Longevity: 2 years 5 months
  • Posts: 443
  • REPUTATION:10

    [+] [-]
nikzzzz, az

[Quote]

    nikzzzz
  • 215
  • Longevity: 5 years 6 months
  • Posts: 3246
  • REPUTATION: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
При чтении кодировка и так автоматом определяется.


Display posts:    

Current time is: 03-Aug 18:07

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum