我在PowerShell中有一个foreach
循环。它会通过一些用户根据CSV文件移动数据来运行。
我想为每条跑过的蜜蜂更新CSV文件,因此CSV如下所示:
Username;OldData;NewData;Status User1;c:\Old;c:\new;Waiting User2;d:\Old;D:\New;Waiting
作为第一个foreach
循环的最后一行(假设数据已复制),将CSV更改为:
Username;OldData;NewData;Status User1;c:\Old;c:\new;Done User2;d:\Old;D:\New;Waiting
在User2完成更新后,再次将其更新为:
Username;OldData;NewData;Status User1;c:\Old;c:\new;Done User2;d:\Old;D:\New;Done
我现在要做的是导入
$Table = Import-Csv c:\csv.csv
然后运行foreach
(伪代码)
foreach ($Row in $Table) {
Copy-Content $row.OldData $row.NewData
Update-Csv $row.Status = "Done"
}
答案 0 :(得分:2)
遵循@AnsgarWiechers提示后,使用
保存更改后的$ Table$Table | Export-Csv C:\csv.csv -NoTypeInformation
为避免在连续运行中多次处理同一行,请排除状态为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