Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Снова немного "поколдовав", "соригинальничал в квадрате":



Код: Выделить весь код
@echo off

set "log=meibillaccfwdownload.log"
set "codes=3, 1006, 4003"

setlocal
if not exist "%log%" (
 echo "%log%" is not found.& pause>nul& endlocal& exit/b 1
) else (
 for %%i in (%codes%) do call set x=%%x%% /c:"Return Code: %%i$"& set %%i=true
 >nul cmd/v/c findstr/ir!x! "%log%"|| (endlocal& exit/b 2)
 for /f %%i in ('^<"%log%" find/c /v ""') do @<"%log%">.tmp (
  for /l %%j in (1 1 %%i) do @set y=& set/p y=& if defined y (
   (
   for /f "tokens=8,9" %%k in ('cmd/v/c echo.!y!') do @if defined %%l (
    if "%%k" equ "Code:" (
     cmd/v/c echo !y: Code: = C: !
    ) else cmd/v/c echo !y!
   ) else cmd/v/c echo !y!
   )|| cmd/v/c echo.!y!
  ) else echo.
 )
)
type .tmp>"%log%"& del .tmp
endlocal


:work
echo :work& echo The label was achieved.& pause>nul


.



Если ориентироваться только на прикреплённый LOG-файл, то код можно бы было сократить вдвое, но я почему-то подозреваю, что содержимое приведённого файла может не полностью соответсвовать реальному содержимому, и поэтому учёл все возможные ситуации, кроме наличия другой кодировки и некоторых маловероятных случаев. Кстати, если бы не условие "если не найдено, то выходить, совсем ничего не делая", можно было бы даже не генерировать шаблоны поиска как таковые и не применять команду "FINDSTR", и в случае отсутстствия нужных кодов возврата файл бы просто переписывался без изменений, после чего осуществлялся бы выход.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:49, 18-04-2015 | #3