BasiL
![](http://forum.ru-board.com/board/avatars/private/BasiL.gif)
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Опять нужна помощь с парсингом текста. Задача - пропарсить текст с восклицательным знаком внутри цикла с включеным setlocal enabledelayedexpansion Т.к. знак ! это вновь посчитаная переменная, то сама переменная не может содержать знака ! Сначала у меня вообще строки с ! не парсились, т.к. обработчик считал что это переменная... и строки коверкались. Потому я для начала (перед setlocal enabledelayedexpansion) поместил код замены ! на #1#: Код: for /r %source% %%a in (*.h,*.c,*.cpp) do ( echo %%a for /f "eol=/ delims=! tokens=1-6" %%b in ('"findstr /c:"LPGEN(" /c:"LPGENT(" /c:"TranslateT(" /c:"_T(" "%%a""') do ( echo %%b#1#%%c#1#%%d#1#%%e>>%tempfile% ) ) | теперь восклицательные знаки не мешают парсить строки. Но дело в том, что нужные мне параметры тоже могут содержать "!". И как потом заменить #1# на "!" я никак не придумаю... т.к. Код: не помгает. Вообще проескейпить восклицательный знак не получается... вообще этот батник я делаю для себя, чтобы переводить миранду. Он будет выдергивать из сырцов строки для перевода. Но вот с восклицательными знаками пока засада, я их либо теряю, либо теряю всю строку с восклицательным знаком. А их давольно много Полный листинг батника подкатом полный листинг батника пример исходных строчек для анализа: Код: _T( "asfsdfa ! asdaf | sdfdf > asdf < sdf && sdfdf") asdf LPGENT("None"), LPGENT("None *"), ROLE_NONE, AFFILIATION_AD TranslateT("asdf \' asdf \' 1" ); _T( "asdf \"ddd\" 2"); LPGEN("asdf 3" ); LPGENT( "asdf 4" ); | надо получить на выходе: Код: [asfsdfa ! asdaf | sdfdf > asdf < sdf && sdfdf] [None] [None *] [asdf ' asdf ' 1] [asdf "ddd" 2] [asdf 3] [asdf 4] | в целом, все работает... за исключением "!" |