K
KeinNickFrei
Gast
Hallo zusammen,
es ist mir schon direkt peinlich, aber ich (der alle Jahre nur was skriptet) bekomme es gerade nicht besser hin.
Ziel:
Eine CSV Datei gehört modifiziert.An einer bestimmten Stelle sollen Werte eingefügt werden, wenn die Nr. entsprechend ist.
Konkret soll, wenn die Personalnummer mit "5" beginnt, ein Datumswert in Position 5 (Semikolon getrennt) eingefügt werden. Es ist NICHT sichergestellt, dass immer jeder Wert einen Inhalt hat.
Ich bekomme es echt nur prozedural hin. CSV-Import klappt nur mit Header und die bekomme ich nie wieder weg...
Mein Stand:
Beispiel $originalfile (Mit Umlauten, um zu prüfen, dass sie erhalten bleiben)
111;123;900;02-03-2002;;Erika;Doe;;
112;123;900;02-03-2002;;Erika;Märters;;
501;456;901;01-02-2001;;Max;Mustermann;;
502;456;901;01-02-2001;;Max;Möster;;
Beispiel $destinationfile (gewünschtes Ziel: bei den 5** Einträgen wurde "Datum2" mit einem Beispielwert gepflegt
111;123;900;02-03-2002;;Erika;Doe;;
112;123;900;02-03-2002;;Erika;Märters;;
501;456;901;01-02-2001;10-10-2018;Max;Mustermann;;
502;456;901;01-02-2001;10-10-2018;Max;Möster;;
Wie wäre es geschickter? :-/
Dankeschön!
es ist mir schon direkt peinlich, aber ich (der alle Jahre nur was skriptet) bekomme es gerade nicht besser hin.
Ziel:
Eine CSV Datei gehört modifiziert.An einer bestimmten Stelle sollen Werte eingefügt werden, wenn die Nr. entsprechend ist.
Konkret soll, wenn die Personalnummer mit "5" beginnt, ein Datumswert in Position 5 (Semikolon getrennt) eingefügt werden. Es ist NICHT sichergestellt, dass immer jeder Wert einen Inhalt hat.
Ich bekomme es echt nur prozedural hin. CSV-Import klappt nur mit Header und die bekomme ich nie wieder weg...
Mein Stand:
Code:
#VARIABLEN = $originalfile und $destinationfile
$users = Get-Content -Path $originalfile
# Import und Header manuell vorgeben
$users = Get-Content $originalfile -Encoding:string | convertfrom-csv -delimiter ";" -header "nr","pers1","pers2","Datum1","Datum2","vorname","nachname","pers3"
# Variable leeren für Tests...
$newusers = ""
foreach( $user in $users) {
if ($user.nr.StartsWith("5")){$user.Datum2 = "10-10-2018"}
#DAS ist der Part, der definitiv besser geht...
$newusers += $user.nr + ";"
$newusers += $user.pers1 + ";"
$newusers += $user.pers2 + ";"
$newusers += $user.Datum1 + ";"
$newusers += $user.Datum2 + ";"
$newusers += $user.vorname + ";"
$newusers += $user.nachname + ";"
$newusers += $user.pers3 + ";"
$newusers += "`r`n"
$newusers | Out-File $destinationfile
}
Beispiel $originalfile (Mit Umlauten, um zu prüfen, dass sie erhalten bleiben)
111;123;900;02-03-2002;;Erika;Doe;;
112;123;900;02-03-2002;;Erika;Märters;;
501;456;901;01-02-2001;;Max;Mustermann;;
502;456;901;01-02-2001;;Max;Möster;;
Beispiel $destinationfile (gewünschtes Ziel: bei den 5** Einträgen wurde "Datum2" mit einem Beispielwert gepflegt
111;123;900;02-03-2002;;Erika;Doe;;
112;123;900;02-03-2002;;Erika;Märters;;
501;456;901;01-02-2001;10-10-2018;Max;Mustermann;;
502;456;901;01-02-2001;10-10-2018;Max;Möster;;
Wie wäre es geschickter? :-/
Dankeschön!