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
Dans les dos, est-il possible de fusionner un ensemble de fichiers afin que, par exemple,
a
b
c
et
1
2
3
devient
a 1
b 2
c 3
Tout comme la commande coller sur les systèmes * nix
Réponses:
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)
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;))
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." :-)