【问题标题】:Replace column values with Powershell用 Powershell 替换列值
【发布时间】:2016-03-24 19:57:15
【问题描述】:

我正在尝试循环浏览 csv 并将名为 Enabled 的列中的任何值从 True 替换为 A

Import-Csv .\test.csv | Where-Object {$_.Enabled -eq 'True'} --> what goes here to replace 'True' with 'A'?

【问题讨论】:

    标签: csv powershell


    【解决方案1】:

    Where-Object 就像一个过滤器,因此传递给管道其余部分的列将EnabledTrue 的列;这将阻止您在输出文件中包含其他文件(我假设您希望最后有一个完整的文件)。

    所以我建议使用ForEach-Object,然后根据里面的条件进行修改,但仍然传递每个对象(修改与否):

    Import-Csv .\test.csv | ForEach-Object {
        if ($_.Enabled -eq 'True') {
            $_.Enabled = 'A'
        }
        $_
    } | Export-Csv .\test-modified.csv -NoTypeInformation
    

    【讨论】:

      【解决方案2】:

      Briantist 的回答很好用。如果你真的想疯狂,你可以创建一个 Excel comobject,选择工作簿/工作表,然后选择“启用”整个列,剪掉空单元格/列标题,然后循环并基本上做同样的事情正如 briantist 所说,虽然这样你可以做一些事情,比如添加条件格式等。这取决于你想要做什么

      【讨论】:

      • 如果我们真的想发疯,我会说Doug FinkeExcel module甚至比使用COM对象更好(并且不需要安装excel)!跨度>
      猜你喜欢
      • 2015-10-18
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 2014-02-26
      • 1970-01-01
      • 2012-03-10
      相关资源
      最近更新 更多