Пакетный скрипт для преобразования .rej в CSV для анализа полезных данных - PullRequest
0 голосов
/ 04 апреля 2019

Цель состоит в том, чтобы искать несколько файлов с расширением .rej, поэтому у меня есть файл, который может легко отображать эту информацию.

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

@echo off
setlocal enabledelayedexpansion
For %%I in (*.rej) do (
    (for /f "delims==" %%A in (%%I) do set string=%%A & echo !string::=,!) >> %%~nI_Tempout.tmp
    (for /f "delims==" %%A in (%%~nI_Tempout.tmp) do set string=%%A & echo !string:[=,!) >> %%~nI_Tempout1.tmp
    (for /f "delims=" %%A in (%%~nI_Tempout1.tmp) do Call :Split %%A ) > %%~nI_New.csv)
    goto :Eof
    :Split
@echo(%1,%9,%11
del *.tmp

File.rej

12.13.14 [-]  [20190304][ VBTS 0 ] REJECTED:IM:2q1231231123124:II:123123123123:TM:1278391237912379128379:CAUSES:
12.13.16 [-]  [20190304][ VBTS 0 ] REJECTED:IM:2q1231231123124:II:123123123123:TM:1278391237912379128379:CAUSES:
12.13.20 [-]  [20190304][ VBTS 0 ] REJECTED:IM:2q1231231123124:II:123123123123:TM:1278391237912379128379:CAUSES:

Однако в конце% 11 печатает% 1 1, Я могу только предположить, что он обнаруживает% 1 эхо следующего 1

выход

12.13.14,2q1231231123124,12.13.141
12.13.16,2q1231231123124,12.13.161
12.13.20,2q1231231123124,12.13.201

ФИНАЛЬНЫЙ КОД

@echo off
setlocal enabledelayedexpansion
For %%I in (*.rej) do (
    (for /f "delims==" %%A in (%%I) do set string=%%A & echo !string::=,!) >> %%~nI_Tempout.tmp
    (for /f "delims==" %%A in (%%~nI_Tempout.tmp) do set string=%%A & echo !string:[=,!) >> %%~nI_Tempout1.tmp
    (for /f "tokens=1,8,10 delims=," %%A in (%%~nI_Tempout1.tmp) do Call :Split %%A %%B %%C ) > %%~nI_New.csv)
    goto :Eof
    :Split
@echo(%1,%2,%3
del *.tmp

1 Ответ

0 голосов
/ 05 апреля 2019

Вы анализируете свои данные во временном файле, анализируете это второй раз во второй временный файл и анализируете это в третий раз. Это неэффективно. Вы можете сделать все это с помощью одной петли for /f, если вы правильно выберете свои токены и разделители:

(for /f "tokens=1,7,11 delims=[-]: " %%A in ('type *.rej 2^>nul') do echo %%A,%%B,%%C)>file_New.csv

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...