powershell - 在 foreach 循环中更新 CSV 文件
问题描述
我foreach
在 PowerShell 中有一个循环。它通过一些用户移动基于 CSV 文件的数据运行。我想为蜜蜂运行的每一行更新 CSV 文件,所以 CSV 看起来像这样:
用户名;旧数据;新数据;状态 用户 1;c:\Old;c:\new;等待 用户 2;d:\Old;D:\New;Waiting
将作为第一个foreach
循环中的最后一行(假设数据已被复制)将 CSV 更改为:
用户名;旧数据;新数据;状态 用户 1;c:\Old;c:\new;完成 用户 2;d:\Old;D:\New;Waiting
在 User2 完成更新后再次将其更新为:
用户名;旧数据;新数据;状态 用户 1;c:\Old;c:\new;完成 用户 2;d:\旧;D:\新;完成
我现在要做的是导入 CSV
$Table = Import-Csv c:\csv.csv
然后运行foreach
(伪代码)
foreach ($Row in $Table) {
Copy-Content $row.OldData $row.NewData
Update-Csv $row.Status = "Done"
}
解决方案
遵循@AnsgarWiechers提示后,将更改的 $Table 保存为
$Table | Export-Csv C:\csv.csv -NoTypeInformation
为避免在连续运行中多次处理同一行,请排除带有 Status 的行Done
## Q:\Test\2019\06\07\SO_56495983.ps1
$File = '.\csv.csv' # 'c:\csv.csv' #
$Table = Import-Csv $File -Delimiter ';'
foreach ($Row in ($Table|Where Status -eq 'Waiting')) {
#Copy-Content $row.OldData $row.NewData
$row.Status = "Done"
}
$Table
$Table | Export-Csv $File -Delimiter ';' -NoTypeInformation