взять строки, начинающиеся с определенной строки, и добавить их в строку раньше - bat file..windows - PullRequest
0 голосов
/ 20 сентября 2018

так что у меня есть файл, подобный этому

03,01234567,,015,+000000021541435,,

88,015,5000000,,Z/ ,,091918 
88,015,10192716,,Z/ ,,091918

03,10222222,,010,+000000000723925,,,015,+000000000752750,,/ ,,091918 

88,066,0,,,015,-200240,,/  

03,0345678,015,33963635,,,901,33963635,,/                                                                                                                                    
88,066,0,,,015,0,,/   

, что мне нужно сделать, это объединить 88 строк с строкой 03 сверху.первая строка нового файла должна быть

03,01234567,,015,+000000021541435,,88,015,5000000,,Z/ ,,091918,88,015,10192716,,Z/ ,,091918 

и т. д.

все, что у меня есть, это

@echo off
(
  for %%F in (TRSF.SUM) do (
    for "delims=" %%A in ('findstr /b /c:"88," "%%F"') do echo %%F %%A
  )
) >newfile.SUM

, и оно вообще не работает.

1 Ответ

0 голосов
/ 21 сентября 2018

Ключом к этому является сбор строк в одну переменную.Я использовал ALINE.ALINE устанавливается всякий раз, когда первые два символа «03».Все остальные записи добавляются в ALINE до тех пор, пока не встретится «03».

Вы можете заметить, что некоторые строки данных в вашем вопросе имеют пробелы в конце строки.

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET "FN=multirows.txt"
SET "ALINE="

FOR /F "delims=" %%a IN ('TYPE "%FN%"') DO (
    SET "THISLINE=%%a"
    SET "RECTYPE=!THISLINE:~0,2!"

    IF "!RECTYPE!" == "03" (
        IF NOT "!ALINE!" == "" (
            ECHO !ALINE!
            SET "ALINE="
        )
        SET "ALINE=!THISLINE!"
    ) ELSE (
        SET "ALINE=!ALINE!!THISLINE!"
    )
)

IF NOT "%ALINE%" == "" ( ECHO %ALINE% )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...