【发布时间】: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
我正在尝试循环浏览 csv 并将名为 Enabled 的列中的任何值从 True 替换为 A。
Import-Csv .\test.csv | Where-Object {$_.Enabled -eq 'True'} --> what goes here to replace 'True' with 'A'?
【问题讨论】:
标签: csv powershell
Where-Object 就像一个过滤器,因此传递给管道其余部分的列将仅是Enabled 为True 的列;这将阻止您在输出文件中包含其他文件(我假设您希望最后有一个完整的文件)。
所以我建议使用ForEach-Object,然后根据里面的条件进行修改,但仍然传递每个对象(修改与否):
Import-Csv .\test.csv | ForEach-Object {
if ($_.Enabled -eq 'True') {
$_.Enabled = 'A'
}
$_
} | Export-Csv .\test-modified.csv -NoTypeInformation
【讨论】:
Briantist 的回答很好用。如果你真的想疯狂,你可以创建一个 Excel comobject,选择工作簿/工作表,然后选择“启用”整个列,剪掉空单元格/列标题,然后循环并基本上做同样的事情正如 briantist 所说,虽然这样你可以做一些事情,比如添加条件格式等。这取决于你想要做什么
【讨论】: