Tipulatoid
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору king_stiven Цитата: Аттачи всегда состоят из определённого числа строк? | нет Elroir Цитата: Насколько я понял, нам известна строка, с которой начинается attachment. | king_stiven Цитата: Строка начала аттача определена? | Да, верно Проверил все предложеные варианты на своем Athlon XP 2800+ на тестовом письме с примерно полумегабайтным аттачем (переписать нужно было 7511 строк) Первый вариант king_steven (он же был и моим первым вариантом, когда начинал писать свой код) Код: @echo off echo %time% for /f "skip=41 tokens=*" %%a in (00000001.eml) do ( echo %%a | find /i "-----" >nul && goto :eof echo %%a>>2a.txt ) echo %time% | - загрузка проца 100% постоянно, время - 26 минут 14 секунд Второй вариант king_steven Код: @ECHO OFF echo %time% for /f "skip=41 tokens=*" %%a in (00000001.eml) do ( echo %%a | findstr /c:"-" >nul && goto :eof echo %%a>>2b.txt ) echo %time% | - загрузка проца 100% постоянно, время - 19 минут 15 секунд Превосходная идея 01MDM (если я правильно ее понял ) привела к такому шустрому коду Код: @ECHO OFF setlocal enabledelayedexpansion echo %time% for /f "skip=41 tokens=*" %%a in (00000001.eml) do ( set attline=%%a set first_symbols_attline=!attline:~0,5! if /i !first_symbols_attline! neq ----- ( echo !attline!>>2c.txt ) else ( goto :next_label ) ) :next_label echo %time% | - загрузка проца 100%; время 7,5 секунд!!! Блестящий вариант Elroir с king_stiven Код: @echo off echo %time% more +41 /s 00000001.eml | findstr /v /c:"-----" | findstr /v /r "^$">>2e.txt echo %time% | - загрузка проца - не успел разглядеть ; время 0,78 секунды!!! Великолепно. Только я чего-то не сообразил. Eml-файл вполне может иметь 2 аттача. Вот возможный его кусок: Код: ------==--bound.27657.webmail15.yandex.ru Content-Disposition: attachment; filename="Action16.DAU" Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name="Action16.DAU" hTvfT40CgwAAAABAgLTIdr5/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhgAA ..... ..... hgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAfIlBYOVQgQAAAAAAgQAAAAAA gQAAAAAA ------==--bound.27657.webmail15.yandex.ru-- ------==--bound.27689.webmail15.yandex.ru Content-Disposition: attachment; filename="lalala.doc" Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name="lalala.doc" hTvfT40CgwAAAABAgLTIdr5/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhgAA ..... ..... hgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IRYQIWRLQWJDAJSDJWDHWIQUHIUAHSDHHDQWTE2G4ISUHIASYD827Y4E12HJHWQIUDHWQIEYQWIEHQW DJWHEKJQH ------==--bound.27689.webmail15.yandex.ru-- | Нужно, чтоб ваш код прекращал выполняться после обнаружения выделеной строки. Возможно ли это? Всем Огромное спасибо. Вы очень помогли Добавлено: Узнать номер выделеной строки - не проблема. Команда more в интерактивном режиме имеет полезную команду P n - вывод следующих n строк. А в батник ее можно как-нибудь запихнуть? | Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 04:55 07-11-2007 | Исправлено: Tipulatoid, 09:25 07-11-2007 |
|