2016-11-25 158 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