You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中将指定CSV文件的列合并到目标CSV并实现行对应匹配

按行一一合并两个CSV文件的PowerShell解决方案

没问题,这种行数匹配的CSV按行合并需求用PowerShell原生代码就能轻松搞定。下面是具体的实现步骤和代码:

步骤说明

因为你的两个CSV文件行数完全一致,我们可以通过索引定位对应行的方式,把csv2的FullName字段追加到csv1的每一行中,最后导出成包含三列的新CSV。

完整代码示例

首先我们先做个简单的行数检查(避免行数不匹配导致合并出错),然后执行合并:

# 导入两个CSV文件(你已经完成这一步,这里可以直接复用)
$csv1 = Import-Csv C:\Tools\csv1.csv
$csv2 = Import-Csv C:\Tools\csv2.csv

# 检查两个CSV的行数是否一致
if ($csv1.Count -ne $csv2.Count) {
    Write-Error "错误:两个CSV文件的行数不匹配,无法按行一一合并!"
    exit
}

# 循环遍历每一行,合并对应内容
$mergedCsv = for ($i = 0; $i -lt $csv1.Count; $i++) {
    [PSCustomObject]@{
        School   = $csv1[$i].School
        Class    = $csv1[$i].Class
        FullName = $csv2[$i].FullName
    }
}

# 导出合并后的CSV文件(指定UTF8编码避免乱码,-NoTypeInformation去掉PowerShell默认的类型行)
$mergedCsv | Export-Csv -Path C:\Tools\merged.csv -NoTypeInformation -Encoding UTF8

另一种写法(用ForEach-Object遍历)

如果你更习惯管道式写法,也可以用ForEach-Object结合索引变量来实现:

$csv1 = Import-Csv C:\Tools\csv1.csv
$csv2 = Import-Csv C:\Tools\csv2.csv

if ($csv1.Count -ne $csv2.Count) {
    Write-Error "错误:两个CSV文件的行数不匹配!"
    exit
}

$index = 0
$mergedCsv = $csv1 | ForEach-Object {
    # 把当前行的School、Class和csv2对应行的FullName组合成新对象
    [PSCustomObject]@{
        School   = $_.School
        Class    = $_.Class
        FullName = $csv2[$index].FullName
    }
    $index++ # 每次循环后索引加1,匹配下一行
}

$mergedCsv | Export-Csv -Path C:\Tools\merged.csv -NoTypeInformation -Encoding UTF8

结果验证

执行完代码后,你会在C:\Tools目录下得到merged.csv,内容就是你想要的格式:

School Class FullName


School1 C1 Fullname1
School2 c2 Fullname2
School3 c3 Fullname3

内容的提问来源于stack exchange,提问作者Guillaume vM M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:17:44