2016-11-25 119 views
1

我有一个小问题,我有3个txt文件,我想将数据合并到一个CSV文件和批处理脚本批合并多个文件到一个

的为例:

的1.txt

苹果

香蕉

草莓


2.txt


3.txt

Ø NE

两个


我要的是这个序列的final.csv文件:

苹果;红;一个

香蕉;蓝;二

StrawberryYellow;三个

有人可以帮我吗?


感谢大家的回答我,我发现另一种方式,我将在万一有人与你分享需要它:

我使用PowerShell来合并的.csv文件

这里是代码:merge.ps1

#Import the CSVs 
## GC = Get-Content 
$csv1 = @(gc ".\1.csv") 
$csv2 = @(gc ".\2.csv") 
$csv3 = @(gc ".\3.csv") 
# Create an Empty Array 
$csv4 = @() 
for ($i=0; $i -lt $csv1.Count; $i++) { 
    $csv4 += $csv1[$i] + ';' + $csv2[$i] + ';' + $csv3[$i] 
    } 
# Output to file 
$csv4 | Out-File ".\output.csv" -encoding default 

# Delete the originals if you want 
Remove-Item .\temp\1.csv 
Remove-Item .\temp\2.csv 
Remove-Item .\temp\3.csv 

而在批处理脚本我有,我用这条线来执行它:script.bat

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '.\merge.ps1'" 
+0

你应该看看http://stackoverflow.com/questions/18437124/how-to-结合两变量列逐列在-庆典 –

+0

这是在bash,即时寻找相似,但在CMD(批) –

+0

@LotPings这个答案的结果给我一个美丽的循环 –

回答

0

这个批处理将读取文件2并联,一个具有输入重定向另一个具有for循环。所以要合并3个文件需要两个步骤。首先将1.txt + 2.txt合并到文件1 + 2.txt中,最后将该中间文件与3.txt合并为1 + 2 + 3.txt。该文件名通过命令行传递给批处理

:: Merge2Files.cmd File1 File2 
@echo off&setlocal EnableDelayedExpansion 
Set "Delim=;" 
< "%~2" (
    for /F "usebackq delims=" %%a in ("%~1%") do (
     set File2Line= 
     set /P File2Line= 
     Echo:%%a%Delim%!File2Line! 
    ) 
) 

输出(精简)

C:\> Merge2Files.cmd 1.txt  2.txt >"1+2.csv" 
C:\> Merge2Files.cmd "1+2.csv" 3.txt >"1+2+3.csv" 
C:\> type 1+*.csv 
1+2.csv 
Apple;Red 
Banana;Blue 
Strawberry;Yellow 

1+2+3.csv 
Apple;Red;One 
Banana;Blue;Two 
Strawberry;Yellow;Three 
+0

我不明白这个脚本,太难为我:') –

+0

谢谢您的宝贵答案,我发现了另一种方式,我将情况与大家分享有人需要它 –

+0

你可以给一个答案,你自己的问题,如果你认为这是值得分享的 – LotPings