Как я могу объединить файлы линию за линией в командной строке Windows?

В DOS, там способ объединить ряд файлов так, чтобы, например,

1.txt

a
b
c

и

2.txt

1
2
3

становится

merged.txt

1
b 2
c 3

Точно так же, как команда вставки на *отклоняют системы

1
задан 23.06.2012, 11:59

3 ответа

Нет, необходимо будет объединить строки с программой или язык сценариев, как Python.

Обновление: Посмотрите на эти порты Win утилит GNU, это включает вставку (.exe)

1
ответ дан 12.12.2019, 10:42

Если довольно простые данные, Вы могли бы сделать это с Excel. Или Вы могли загрузить OpenOffice и сделать это в Calc, но метод в Calc является болью. (Необходимо вставить данные в два столбца, затем объединяют их со "Связать" функцией, в форме формулы (например, конкатенируйте (Row1; row2;))

1
ответ дан 12.12.2019, 10:42

Определенно согласитесь, что порт инструментов Unix или языка сценариев является способом пойти (хотя VBScript или Powershell являются, вероятно, более удобным выбором, чем Python для пользователей Windows), но слияние двух файлов возможно в DOS:-

@ECHO OFF

REM .bat to merge 1.txt and 2.txt

GOTO :Main

:StartMerge
    SET /P _a=<%1
    SET /P _b=<%2

    ECHO %_a% %_b%

    DEL %1 %2

    GOTO :EndMerge

:CleanUp
    SET _LinesIn1=
    SET _LinesIn2=

    SET _a=
    SET _b=

    GOTO :EOF

:Main
    SET _LinesIn1=0
    SET _LinesIn2=0

    FOR /F "delims=: tokens=1,*" %%i IN ('findstr /n "^" 1.txt') DO (
        ECHO.%%j>_c1n%%i
        SET /A _LinesIn1+=1
    )

    FOR /F "delims=: tokens=1,*" %%i IN ('findstr /n "^" 2.txt') DO (
        ECHO.%%j>_c2n%%i
        SET /A _LinesIn2+=1
    )

    IF %_LinesIn1% NEQ %_LinesIn2% (
        ECHO Cannot merge files; mismatched line count:-
        ECHO   1.txt - %_LinesIn1% lines
        ECHO   2.txt - %_LinesIn2% lines

        DEL _c*

        GOTO :CleanUp
    )

    FOR /L %%n IN (1, 1, %_LinesIn1%) DO (
        CALL :StartMerge _c1n%%n _c2n%%n

        :EndMerge
        REM No-op to avoid ") was unexpected at this time." error
    )

    GOTO :CleanUp

Файл под "Просто, потому что Вы можете, не означает, что Вы должны".:-)

1
ответ дан 12.12.2019, 10:42

Теги

Похожие вопросы