逐列连接.csv文件

时间:2014-11-04 12:52:40

标签: csv cmd

我有两个csv文件。 我希望逐列连接它们。

我发现这个Merge multiple csv files awk column-wise, no match给出的命令在Windows命令提示符下无效。

请帮助。谢谢你让我的生活更轻松。

1 个答案:

答案 0 :(得分:0)

理想情况下,您可以使用unix"粘贴"命令这样做。安装Windows SUA后,您可以使用粘贴。但是,我尝试了一下,因为它仍然是unix,它不像文件中的CR。即,Unix仅使用LF,Windows使用CRLF并且粘贴将保留CR,因此您最终会在中间行回车。

写一个paste.exe来做这件事真的不会花费太多精力,我确定有人必须已经这样做了 - 但是我找不到。

没有单一的命令行可以解决这个问题(没有使用Windows版本的awk或者粘贴或者可能是sed ...)

所以......这是一个为你做的蝙蝠文件。它可以处理多个输入文件,最后一个参数是输出文件名。

@echo off
setlocal
if x%3 equ x goto usage

set tmpFile=%tmp%\JoiningTxt-%random%.csv
set tmpFile2=%tmp%\JoiningTxt2-%random%.csv

rem Set up the first file
copy %1 %tmpFile% > NUL
shift

:loop
rem append each file in turn
if x%2 equ x goto complete
call :Append %tmpFile% %1
shift
goto loop

:Append
rem Concatenate the 2 files together. The setlocals are to allow special chars to work ! ^ etc 
(
    for /f "tokens=*" %%a in (%1) do (
        setlocal DISABLEDELAYEDEXPANSION
        set "FirstFileLine=%%a"
        setlocal ENABLEDELAYEDEXPANSION
        set /p SecondFileLine=
        echo !FirstFileLine!,!SecondFileLine!>>%tmpFile2%
        endlocal
        endlocal
    )
)<%2
copy %tmpFile2% %1 > NUL
del %tmpFile2%
goto :EOF

:complete
copy %tmpFile% %1 > NUL
del %tmpFile%
goto end

:usage
echo Usage:
echo    %0 file1In file2In file...In fileOut
echo You must have at least 2 in files
goto end

:end 
endlocal