Mit Powershell Spalte in CSV hinzufügen und mit Inhalt füllen
Hallo,
Ich habe folgendes Problem. In einer CSV-Datei sind 11 Spalten, wie folgt:
Artikelnummer;Bild1;Bild2;Bild3;[.......];Bild10
12345-0001;12345-0001-1.jpg;12345-0001-2.jpg;12345-0001-3.jpg;[.....];12345-0001-10.jpg
12345-0002;12345-0002-1.jpg;12345-0002-2.jpg;12345-0002-3.jpg;[.....];12345-0002-10.jpg
Nun soll in jedem Feld entweder -0001- oder -0002- durch einen Unterstrich _ ersetzt werden.
Folgender Code funktioniert schon super:
Und als Ergebnis erhalte ich wie gewollt:
Artikelnummer;Bild1;Bild2;Bild3;[.......];Bild10
12345-0001;12345_1.jpg;12345_2.jpg;12345_3.jpg;[.....];12345_10.jpg
12345-0002;12345_1.jpg;12345_2.jpg;12345_3.jpg;[.....];12345_10.jpg
Als Nächstes benötige ich aber noch eine zusätzliche Spalte Bild0, welche als Wert jeweils den Inhalt von Bild1 ABER ohne _1 enthält. Die fertige Datei sollte so aussehen:
Artikelnummer;Bild1;Bild2;Bild3;[.......];Bild10;Bild0
12345-0001;12345_1.jpg;12345_2.jpg;12345_3.jpg;[.....];12345_10.jpg;12345.jpg
12345-0002;12345_1.jpg;12345_2.jpg;12345_3.jpg;[.....];12345_10.jpg;12345.jpg
Ich habe es mit folgendem Code versucht, aber das klappt nicht:
Kann mir jemand helfen?
Gruß,
svenyo
Ich habe folgendes Problem. In einer CSV-Datei sind 11 Spalten, wie folgt:
Artikelnummer;Bild1;Bild2;Bild3;[.......];Bild10
12345-0001;12345-0001-1.jpg;12345-0001-2.jpg;12345-0001-3.jpg;[.....];12345-0001-10.jpg
12345-0002;12345-0002-1.jpg;12345-0002-2.jpg;12345-0002-3.jpg;[.....];12345-0002-10.jpg
Nun soll in jedem Feld entweder -0001- oder -0002- durch einen Unterstrich _ ersetzt werden.
Folgender Code funktioniert schon super:
$sourceFile = 'C:\Ordner\Unterordner\pictures\*.csv'
$destinationFile = 'C:\Ordner\Unterordner\pictures\Bilder1neu.csv'
(Get-Content $sourceFile) | ForEach-Object {
$_.replace('-0002-', '_').replace('-0001-', '_')
} | Set-Content $destinationFile
Und als Ergebnis erhalte ich wie gewollt:
Artikelnummer;Bild1;Bild2;Bild3;[.......];Bild10
12345-0001;12345_1.jpg;12345_2.jpg;12345_3.jpg;[.....];12345_10.jpg
12345-0002;12345_1.jpg;12345_2.jpg;12345_3.jpg;[.....];12345_10.jpg
Als Nächstes benötige ich aber noch eine zusätzliche Spalte Bild0, welche als Wert jeweils den Inhalt von Bild1 ABER ohne _1 enthält. Die fertige Datei sollte so aussehen:
Artikelnummer;Bild1;Bild2;Bild3;[.......];Bild10;Bild0
12345-0001;12345_1.jpg;12345_2.jpg;12345_3.jpg;[.....];12345_10.jpg;12345.jpg
12345-0002;12345_1.jpg;12345_2.jpg;12345_3.jpg;[.....];12345_10.jpg;12345.jpg
Ich habe es mit folgendem Code versucht, aber das klappt nicht:
$sourceFile = 'C:\Ordner\Unterordner\pictures\*.csv'
$destinationFile = 'C:\Ordner\Unterordner\pictures\Bilder1neu.csv'
(Get-Content $sourceFile) | ForEach-Object {
$_.replace('-0002-', '_').replace('-0001-', '_')
} | Set-Content $destinationFile
$csv = Import-CSV 'C:\Ordner\Unterordner\pictures\Bilder1neu.csv' -delimiter ';'
$csv | add-member -MemberType NoteProperty -Name 'Bild' -Value $_.Bild1.replace('_1.jpg','.jpg') -Force
$csv | Export-CSV 'C:\Ordner\Unterordner\pictures\Bilder1neu.csv' -NoType -delimiter ';' -Encoding Default
Kann mir jemand helfen?
Gruß,
svenyo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 569550
Url: https://administrator.de/forum/mit-powershell-spalte-in-csv-hinzufuegen-und-mit-inhalt-fuellen-569550.html
Ausgedruckt am: 06.04.2025 um 16:04 Uhr
4 Kommentare
Neuester Kommentar
Moin,
Wenn ich das richtig verstehe, dann versuchst Du Deine Zieldatei zu importieren, die vermutlich vor Ausführung des Skripts noch nicht vorhanden ist. Damit wäre dann die Pfadangabe ungültig und wird angemeckert. Nur so nebenbei: Wieso schreibst Du die beiden Angaben in eine Variable und benutzt sie dann weiter unten nicht, sondern schreibst immer den gesamten Pfad rein?
Liebe Grüße
Erik
Zitat von @svenyo:
Leider erhalte ich folgende Fehlermeldung:
> $sourceFile = 'C:\Ordner\Unterordner\pictures\*.csv'
> $destinationFile = 'C:\Ordner\Unterordner\pictures\Bilder1neu.csv'
>
> (Get-Content $sourceFile) | ForEach-Object {
> $_.replace('-0002-', '_').replace('-0001-', '_')
> } | Set-Content $destinationFile
>
> $csv = Import-CSV 'C:\Ordner\Unterordner\pictures\Bilder1neu.csv' -delimiter ';'
> $csv = $csv | Select-Object -Property *, @{label = 'Bild0'; expression = {$_.Bild1.replace('_1.jpg','.jpg')}}
> $csv | Export-CSV 'C:\Ordner\Unterordner\pictures\Bilder1neu.csv' -NoType -delimiter ';' -Encoding Default
>
Leider erhalte ich folgende Fehlermeldung:
> Import-Csv : Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "name" ungültig ist. Ändern Sie den Wert des Arguments "name", und führen Sie
> den Vorgang erneut aus.
> Bei Zeile:1 Zeichen:18
Wenn ich das richtig verstehe, dann versuchst Du Deine Zieldatei zu importieren, die vermutlich vor Ausführung des Skripts noch nicht vorhanden ist. Damit wäre dann die Pfadangabe ungültig und wird angemeckert. Nur so nebenbei: Wieso schreibst Du die beiden Angaben in eine Variable und benutzt sie dann weiter unten nicht, sondern schreibst immer den gesamten Pfad rein?
Liebe Grüße
Erik