Comment fusionner des fichiers ligne par ligne dans la ligne de commande Windows?

1

Dans les dos, est-il possible de fusionner un ensemble de fichiers afin que, par exemple,

1.txt

a
b
c

et

2.txt

1
2
3

devient

merged.txt

a 1
b 2
c 3

Tout comme la commande coller sur les systèmes * nix

Paul
la source
3
Dos comme dans "dos - système d'exploitation" ou comme dans "Windows cmd.exe"?
Akira
cygwin travaille pour moi
XIMRX

Réponses:

1

Non, vous devrez fusionner les lignes avec un programme ou un langage de script tel que Python.

Mise à jour: Regardez ces ports Win des utilitaires GNU , cela inclut coller (.exe)

inverser
la source
1
Dommage. Sukcs ne doit pas avoir Linux au travail ...: p
Paul
@Paul: installer cygwin.com/setup.exe
akira
1

Si les données sont relativement simples, vous pouvez le faire avec Excel. Ou vous pouvez télécharger OpenOffice et le faire dans Calc, mais la méthode dans Calc est pénible. (Vous devez coller les données dans deux colonnes, puis les fusionner avec la fonction "Concaténer", sous la forme d'une formule (par exemple, concaténer (Ligne1; Ligne2;))

Satanicpuppy
la source
1

Décidément d'accord pour dire qu'un port d'outils Unix ou un langage de script est ce qu'il faut faire (bien que VBScript ou Powershell soient probablement des choix plus pratiques que Python pour les utilisateurs Windows), mais la fusion de deux fichiers est possible sous 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

Fichier sous "Ce n'est pas parce que tu peux, tu devrais le faire." :-)

Kanji
la source