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
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
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
Tags command-line windows merge