Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   CMD BAT редактирование txt (http://forum.oszone.net/showthread.php?t=314399)

sis211 29-04-2016 16:48 2630717

CMD BAT редактирование txt
 
Не могу написать батник чтобы редактировал файл так как мне надо. Есть файл например 1.log его содержимое:

1. вариант когда есть аварии

LOADING PROGRAM VERSION 12.2-0
BTS ALARM LISTING
KRA038 BCF-2308 ENVIR 2016-04-29 13:15:21.26
*** ALARM
(29807) 7401 EXTERNAL AL 1
POWER
KRA038 BCF-2301 ENVIR 2016-04-29 14:15:21.21
*** ALARM
(29807) 7401 EXTERNAL AL 1
POWER
END OF BTS ALARM LISTING
COMMAND EXECUTED
BASE TRANSCEIVER STATION ALARMS HANDLING COMMAND <EO_>

2. вариант когда нет аварий

LOADING PROGRAM VERSION 12.2-0
BTS ALARM LISTING
/* NO MATCHING ALARMS FOUND */
END OF BTS ALARM LISTING
COMMAND EXECUTED
BASE TRANSCEIVER STATION ALARMS HANDLING COMMAND <EO_>

3. вариант, лог файла может быть какой угодно недописанный, когда когда сессия завершилась неудачно или зависла.

в 1-м варианте указаны 2 аварии а их может быть много
нужно сделать батник, чтобы он создавал новый файл 2.txt

форматы выхода:
1. вариант, когда аварии есть

BCF-2308
2016-04-29 13:15:21.26
BCF-2301
2016-04-29 14:15:21.21

2. если 2 вариант то писало:
NO MATCHING ALARMS FOUND
3. если ни то ни то, нужно чтобы в файл писал "LOADING..."

максимум что я смог сделать это написать такую команду, она как бы выдет результат который мне нужно, но он сильно длинный

findstr "BCF MATCHING" c:\1.log >2.txt

Georgio 29-04-2016 17:33 2630729

Код:

@echo off

<"1.log">>"2.log" (
 for /f "tokens=2-5" %%i in ('more') do @(
  if /i "%%j" equ "ENVIR" echo.%%i& echo %%k %%l& set bool=*
  if /i "%%i" equ "NO" echo.%%i %%j %%k %%l& set bool=*
 )
 if not defined bool echo LOADING...
)

exit/b


sis211 04-05-2016 11:31 2631740

ого, какой простой код, спасибо получилось!

единственная проблема, он в файл добавляет новые строчки, а нужно чтобы файл пересоздавался.

Georgio 04-05-2016 11:41 2631746

Цитата:

Цитата sis211
... он в файл добавляет новые строчки, а нужно чтобы файл пересоздавался. »



Код:

@echo off

<"1.log">"2.log" (


sis211 10-05-2016 10:51 2633437

спасибо

sis211 17-06-2016 15:50 2643525

Подскажите еще один вопрос. Решил, что ошибок при подключении многовато, а значит в общем получается много файлов со значением LOADING..., подскажите как сделать, чтобы в случае, когда скрипт пишет в файл 2.log строчку LOADING... он не писал ее а просто не изменял этот файл и оставлял значения которые там были до запуска перезаписи и редактирования.

Или второй вариант, при неуспешном выполнении (то есть когда в файл должно писаться Loading...), делать перезапуск:

я пробовал сделать так:

:loop1

1.exe

<"1.log">>"2.log" (
for /f "tokens=2-5" %%i in ('more') do @(
if /i "%%j" equ "ENVIR" echo.%%i& echo %%k %%l& set bool=*
if /i "%%i" equ "NO" echo.%%i %%j %%k %%l& set bool=*
)
if not defined bool Goto loop1
)

не сработал фокус.


Время: 08:16.

Время: 08:16.
© OSzone.net 2001-