1

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

1.txt

a
б
с

а также

2.txt

1
2
3

становится

merged.txt

1
Би 2
с 3

Так же, как команда вставки в системах * nix

3 ответа3

1

Определенно соглашаются , что порт инструментов 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

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

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .