igor_andreev
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору cluster Миранды у меня нет, толком проверить не могу, но попробуй так Код: @ECHO OFF IF EXIST +RESULT.LOG DEL +RESULT.LOG FOR %%A IN (*.TXT) DO ( CALL :FIND_USERNAME %%A CALL :FIND_UIN %%A IF DEFINED USER IF DEFINED UIN ( REM Если %USER% и %UIN% заданы, вызываем REM соответствующую метку батника и записываем их CALL :WRITE_USERNAME_AND_UIN ) ELSE ( REM Иначе сбрасываем переменные %USER% и %UIN% SET USER= SET UIN= ) ) GOTO :EOF :FIND_USERNAME FOR /F "TOKENS=2 DELIMS=:" %%I IN ('FIND "User" "%*"') DO ( REM Если не задана переменная USER, то присваиваем USER REM первому же найденному и выходим из цикла FOR, REM дальше этот файл не читаем IF NOT DEFINED USER (SET USER=%%I && GOTO :EOF) ) GOTO :EOF :FIND_UIN FOR /F "TOKENS=2 DELIMS=:" %%I IN ('FIND "UIN" "%*"') DO ( REM Если не задана переменная UIN, то присваиваем UIN REM первому же найденному и выходим из цикла FOR, REM дальше этот файл не читаем IF NOT DEFINED UIN (SET UIN=%%I && GOTO :EOF) ) GOTO :EOF :WRITE_USERNAME_AND_UIN REM Записываем в лог ECHO %USER% - %UIN% >> +RESULT.LOG REM И сбрасываем переменные %USER% и %UIN% SET USER= SET UIN= GOTO :EOF | Если копировать с форума, то в конце каждого предложения добавляется пробел - удали. В SET USER= и SET UIN= после знака "=" не должно быть пробелов, сразу CRLF, иначе переменная не обнулится. А вообще в данном случае насчет оптимизации я согласен с evle - такой батник нужен очень редко и по идее начхать большую кучу, сколько времени он будет трудиться А то можно и ENABLEDELAYEDEXPANSION задействовать, быстрее будет работать. Добавлено: Кстати Цитата: В блокноте все двоеточия на одном уровне. Но там не табуляция, а пробелы. После двоеточия - один пробел. | В блокноте все на одном уровне, потому что у тебя там моноширинный шрифт в настройках. Что и есть правильно, для написания кода скриптов или батников это рекомендуется. Моноширинные шрифты тем и хороши, что ВСЕ знаки имеют одинаковую ширину, а когда код упорядочен, его и читать легче. Вот, как выглядит с пропорциональным шрифтом Цитата: !!!!! 111 4444 # $$$$ EE(IIII) @@@@@ ^^^ HHHH & **** %%(8888) UUUUU &&& #### ? YYYY 55(KKKK) | а вот то-же самое с моноширинным(все строчки и все слова одной длины) Цитата: !!!!! 111 4444 # $$$$ EE(IIII) @@@@@ ^^^ HHHH & **** %%(8888) UUUUU &&& #### ? YYYY 55(KKKK) | Я обычно Lucida Console использую для батников. |