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

如何用PowerShell将CSV第二列及以后的列值移至新行?

解决PowerShell拆分CSV所有列值为单独行的问题

我刚好处理过类似的需求,帮你搞定这个问题!

首先看你的CSV示例没有表头,这种情况下用Get-Content直接处理每行更灵活,不需要担心表头的问题。这里有个简单的脚本可以实现你要的效果:

# 读取源CSV文件,处理每行并输出所有列值为单独行
Get-Content -Path "你的CSV文件路径.csv" | ForEach-Object {
    # 按逗号分割当前行的所有列
    $allValues = $_ -split ','
    # 输出每个值,同时过滤可能的空值(比如行末尾多出来的逗号)
    $allValues | Where-Object { $_ -notmatch '^\s*$' }
} | Set-Content -Path "输出结果.txt"

脚本说明:

  • Get-Content:读取CSV的每一行内容
  • $_ -split ',':把当前行按逗号拆成一个个值的数组
  • Where-Object:过滤掉空白值(包括只含空格的情况),避免输出空行
  • Set-Content:把最终结果保存到输出文件里

如果你的CSV是有表头的(比如第一行是列名),那可以用Import-Csv来处理,确保不会把表头当成数据:

# 导入带表头的CSV
$csvData = Import-Csv -Path "带表头的CSV文件.csv"
# 获取所有列的名称
$columnNames = $csvData[0].PSObject.Properties.Name

# 遍历每一行,输出每个列的值
$csvData | ForEach-Object {
    foreach ($col in $columnNames) {
        $value = $_.$col
        # 跳过空值
        if ($value -and $value.Trim() -ne '') {
            $value.Trim()
        }
    }
} | Set-Content -Path "输出结果.txt"

你之前用Import-Csv搭配Select-Object没成功,是因为Select-Object只是选择列,不会把列里的值拆分成单独的行——我们需要的是遍历每个列的值并逐个输出,这样才能让所有内容都变成单行单个值的形式。

内容的提问来源于stack exchange,提问作者Awsmike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:08:22