Обновить файл CSV в цикле foreach

У меня есть цикл foreach в PowerShell. Он проходит через некоторых пользователей, перемещающих данные на основе файла 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

Что я делаю сейчас, так это импортирую CSV с помощью

$Table = Import-Csv c:\csv.csv

а затем запустите foreach (псевдокод)

foreach ($Row in $Table) {
    Copy-Content $row.OldData $row.NewData
    Update-Csv $row.Status = "Done"
}

Удалить Update-Csv.

Ansgar Wiechers 07.06.2019 16:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
562
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Следуя подсказке @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

Так что это не испортит цикл to, изменяющий активную таблицу, за которой он работает? - делаем «$row.Status = «Готово»»

nOrphf 07.06.2019 18:50

Я упустил из виду недостающее -Delimiter ';'. Теперь должно работать, как ожидалось.

user6811411 07.06.2019 18:59

Другие вопросы по теме