我有一点问题,我有3个txt文件,我想将数据合并到一个带有批处理脚本的csv
例如:
的1.txt
苹果
香蕉
草莓
2.txt
红色
蓝
黄
3.txt
一
两个
三
我想要的是具有以下序列的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 :(得分: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