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


3
Dos comme dans "dos - système d'exploitation" ou comme dans "Windows cmd.exe"?
Akira

cygwin travaille pour moi
XIMRX

Réponses:



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;))


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." :-)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.