Ilyansk
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору ой, вот это да! вот это оперативность! спасибо за отклик! извините, я тут "погружен" вот и думал, что ваши телепаты не в отпуске... в общем есть файл со след. содержимым 11 22 33 44 555 66 77 HALT 11 22 3333 44 555 HALT 11 22 33 44 5 6666 77 88 HALT на выходе должны иметь файл 44,555 22,3333 5,6666 так яснее? мысль была такая: до слова HALT запоминаем посылки (я тут вставлю комменты..., осторожнее, из-за них "сходу" код не запашет) Код: set "n=0" for /f "tokens=*" %%A in (inp_fil.txt) do call :proc %%A goto :eof :proc if not "%1"=="" ( // если не пусто set /a n+=1 // инкремент счетчика паттернов set T!n!=%1 //запоминание в Тn паттерна n if "%1"=="HALT" ( //если паттерн HALT посылка кончилась set /a i1=n-4 //вычисляем индексы нужных Т set /a i2=n-3 echo %T!i1!%,%T!i2!% >> out_file.txt //пишем на выход, вот тут-то и трабль //конструкция %Т!i1!%, по-моему, должна выдать содержимое //T4 при n=8, но выдается пусто set "n=0" //обнуление счетчика паттернов ) shift //сдвиг входа goto :proc ) | rem в основе лежит конструкция уважаемого igor_andreev Т1=11 Т2=22 и тд. индексы у Т инкрементируются встретив HALT, отнимаем у текущего индекса 3 и 4, "подклеиваем" полученные значения к имени Т, получаем, например Т3 и ее ЗНАЧЕНИЕ записываем на выход в приложении к приведенному примеру Т=11 Т2=22 Т3=33 Т4=44 Т5=555 Т6=66 Т7=77 Т8=HALT тут мы "стопоримся" 4-й назад элемент от HALT, не считая его самого, это Т4=44. Счетчик=8, так вот, в файл нужно записать содержимое Т4 (8-4) и Т5 (8-3). счетчик паттернов каждый раз может быть разный... | Всего записей: 70 | Зарегистр. 27-07-2006 | Отправлено: 10:14 08-11-2007 | Исправлено: Ilyansk, 10:23 08-11-2007 |
|