In CSV Dateien Spalte mit Inhalt aus Dateinamen hinzufügen und zusammenfügen
Hallo,
ich erhalte täglich eine csv Datei (Beispieldateiname: Energiebilanz_2024_04_10.csv).
Diese enthält eine Kopfzeile, 9 Spalten (A bis I) und immer 96 Zeilen (97 Zeilen mit Kopfzeile).
Diese csv Datei soll nun bearbeitet werden:
1. die Kopfzeile soll entfernt werden
2. es soll eine Spalte (am Anfang) eingefügt werden mit dem Teil des Dateinamens,
der das Datum der Werte enthält (Position 15-18 ist Jahr, Pos 20-21 ist Monat, Pos 23-24 ist Tag)
Format in Spalte sollte sein JJJMMTT
3. alle so bearbeiteten csv Dateien sollen zusammengefügt werden
Ziel ist die Gesamtdatei in Excel auszuwerten.
Eine Lösung könnte wohl Powershell sein, habe aber keinerlei Plan von Programmierung,
und alle von Hand zu Fuss umzuwandeln ist echt mühsam.
Schon mal vorab vielen Dank für eure Hilfe.
ich erhalte täglich eine csv Datei (Beispieldateiname: Energiebilanz_2024_04_10.csv).
Diese enthält eine Kopfzeile, 9 Spalten (A bis I) und immer 96 Zeilen (97 Zeilen mit Kopfzeile).
Diese csv Datei soll nun bearbeitet werden:
1. die Kopfzeile soll entfernt werden
2. es soll eine Spalte (am Anfang) eingefügt werden mit dem Teil des Dateinamens,
der das Datum der Werte enthält (Position 15-18 ist Jahr, Pos 20-21 ist Monat, Pos 23-24 ist Tag)
Format in Spalte sollte sein JJJMMTT
3. alle so bearbeiteten csv Dateien sollen zusammengefügt werden
Ziel ist die Gesamtdatei in Excel auszuwerten.
Eine Lösung könnte wohl Powershell sein, habe aber keinerlei Plan von Programmierung,
und alle von Hand zu Fuss umzuwandeln ist echt mühsam.
Schon mal vorab vielen Dank für eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 62694538589
Url: https://administrator.de/forum/in-csv-dateien-spalte-mit-inhalt-aus-dateinamen-hinzufuegen-und-zusammenfuegen-62694538589.html
Ausgedruckt am: 30.04.2025 um 07:04 Uhr
4 Kommentare
Neuester Kommentar

Moin,
Gruß
habe aber keinerlei Plan von Programmierung
dann fragen Sie Chef, ob man sich sowas entwickeln lassen könnte. Würde viel Zeit (und damit auch Geld) sparen ;)Schon mal vorab vielen Dank für eure Hilfe.
Du erwartest nun ein fertiges Script, oder?Gruß
Moin,
Damit kannst du schon mal loslegen.
Wenn du "irgendwo" nicht weiterkommst, bitte melden
Zitat von @excelbeginner:
Eine Lösung könnte wohl Powershell sein, habe aber keinerlei Plan von Programmierung,
kann man lernen. Die SPrache ist meist irrelevant, wenn man selbst erst einmal ein logisches Konzept hatEine Lösung könnte wohl Powershell sein, habe aber keinerlei Plan von Programmierung,
und alle von Hand zu Fuss umzuwandeln ist echt mühsam.
Das ist meistens so...ich erhalte täglich eine csv Datei (Beispieldateiname: Energiebilanz_2024_04_10.csv).
Diese enthält eine Kopfzeile, 9 Spalten (A bis I) und immer 96 Zeilen (97 Zeilen mit Kopfzeile).
Diese csv Datei soll nun bearbeitet werden:
Dazu brauchst duDiese enthält eine Kopfzeile, 9 Spalten (A bis I) und immer 96 Zeilen (97 Zeilen mit Kopfzeile).
Diese csv Datei soll nun bearbeitet werden:
- die Kopfzeile soll entfernt werden
- es soll eine Spalte (am Anfang) eingefügt werden mit dem Teil des Dateinamens, der das Datum der Werte enthält (Position 15-18 ist Jahr, Pos 20-21 ist Monat, Pos 23-24 ist Tag). Format in Spalte sollte sein JJJMMTT
- alle so bearbeiteten csv Dateien sollen zusammengefügt werden
- Get-ChildItem()
- Foreach()
- RegEx() oder "viel" Replace()
Select-Object @{Name='Datum';Expression=[JJJJMMTT]}, *
wird als Pipe nach dem Import-CSV eingebunden:Import-CSV [meine.csv] | Select-Object @{Name='Datum';Expression=[JJJJMMTT]}, *
}} wobei JJJJMMTT das aus dem Dateinamen exrahierte Datum ist- Export-Csv() -NoHeader -Append
Damit kannst du schon mal loslegen.
Wenn du "irgendwo" nicht weiterkommst, bitte melden

$all = foreach($file in Get-ChildItem -Path "E:\data" -File -Filter *.csv){
Import-Csv -Path $file.Fullname -Delimiter ";" -Encoding Default | select @{n='Datum';e={$file.Basename -replace '.*(\d{4})_(\d{2})_(\d{2})$','$1$2$3'}},*
}
if ($all){
$all | ConvertTo-Csv -Delimiter ";" -NoType | select -skip 1 | set-content -Path .\merged.csv
}
Gruß