smirnvlad
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ini для примера Код: [section1] value1=a value2=b [section2] value1=c value2=d [section123] value1=e value2=f [not_section3] value1=g value2=h | получаем Код: x_1_1=a y_1_1=b x_2_2=c y_2_2=d x_3_123=e y_3_123=f | Код: @echo off set n=0 REM Читаем файл 1.ini построчно, строку записываем в переменную line, вызываем подпрограмму :lparse for /f "usebackq delims=" %%a in ("1.ini") do set "line=%%a" && call:lparse REM Чтобы :lparse не выполнился ещё раз переходим в конец файла goto:eof :lparse REM Если первый символ в строке равен [ REM и последний равен ] if "["=="%line:~0,1%" if "]"=="%line:~-1,1%" ( REM сбрасываем тип секции set section_type= REM Если 7 символов начиная со второго равны section if /i "section"=="%line:~1,7%" ( REM запоминаем имя секции, на случай параметров value1,value2 в других секциях set section_type=section REM присваиваем section_num всё что после [section и ] set section_num=%line:~8,-1% REM Увеличиваем n на 1 set /a n+=1 ) ) REM Если строкаа принадлежит секции section REM и первые шесть символов в строке равны value1 выводим на экран: REM y REM символ _ REM номер секции по порядку (%n%) REM символ _ REM название секции (%section_num%) REM символ = REM Все что в строке после value1= if "%section_type%"=="section" if /i "value1"=="%line:~0,6%" echo x_%n%_%section_num%=%line:~7% if "%section_type%"=="section" if /i "value2"=="%line:~0,6%" echo y_%n%_%section_num%=%line:~7% | чтобы получить не x_3_123= и y_3_123= а x3= и y3= надо в последних двух строчках удалить символ подчеркивания (_) поcле x и полсе y и подчеривание%section_num% (_%section_num%) или чтобы получить x123= и y123= надо в последних двух строчках удалить (_%n%_) | Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 07:35 09-11-2010 | Исправлено: smirnvlad, 10:27 09-11-2010 |
|