Mesclar dois arquivos com o Windows linha de comando por linha

2

Eu tenho um script em lote que executa dois coletores de sensores em dois arquivos csv separados.

Gostaria de executar um comando no final do script que mescla os dois arquivos linha a linha.

ie: Arquivo1:

1,2,3
1,2,3
1,2,3

Arquivo2

x,y,z
x,y,z
z,y,z

Arquivo mesclado:

1,2,3,x,y,z
1,2,3,x,y,z
1,2,3,x,y,z
    
por Rev Tyler 01.10.2014 / 05:35

2 respostas

2
powershell $f1=gc File1;$f2=gc File2;for($i=0;$i-lt$f1.length;++$i){$f1[$i]+','+$f2[$i]}>Merged-File.txt

Atualização 1:

powershell $f1=gc File1;$f2=gc File2;$i=0;$f1^|%{$f1[$i]+','+$f2[$i];++$i}>Merged-File.txt
    
por 01.10.2014 / 06:11
0

Para uma solução em lote, você pode tentar

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem configure files to merge
    set "file1=file1.csv"
    set "file2=file2.csv"

    rem find how many lines we need to merge
    for /f %%a in ('find /c /v "" ^< "%file1%"') do set "lines=%%a"
    if "%lines%" lss "0" goto :eof

    rem define input streams for both files    
    8<"%file1%" 9<"%file2%" (

        rem For each of the lines, read from file1 and file2, with 
        rem delayed expansion disabled to avoid problems with possible !
        rem Then delayed expansion is enabled, lines printed, and 
        rem delayed expansion disabled again

        for /l %%a in (1 1 %lines%) do (
            set /p "line1=" <&8 || exit /b
            set /p "line2=" <&9 || exit /b
            setlocal enabledelayedexpansion
            echo(!line1!,!line2!
            endlocal
        )

    ) > "outputFile.csv"
    rem Send all the output to the final file
    
por 01.10.2014 / 12:32