Ergänzen einer CSV Datei als letze Spalte mit Teil der Dateiname
ich habe ca. 12000 Dateien die im Batch Betrieb ergänzt werden sollen.
Der Aufbau der Dateien ist etwa so:
Header1; Header2; Header3
20001;10;2
20002;10;2
20003;11;0
Die Dateiname lautet "Dummy1_Dummy2_12223234_2324.csv".
Ich hätte gern den letzten Teil der Dateiname "12223234_2324" in der CSV Datei in eine weitere Spalte als letzte Spalte ergänzt. Etwa so:
Header1; Header2; Header3;Header4
20001;10;2;12223234_2324
20002;10;2;12223234_2324
20003;11;0;12223234_2324
Header4 kann auch die Nummer 12223234_2324 enthalten.
Vielen Dank schon mal für Euere Hilfe !
Der Aufbau der Dateien ist etwa so:
Header1; Header2; Header3
20001;10;2
20002;10;2
20003;11;0
Die Dateiname lautet "Dummy1_Dummy2_12223234_2324.csv".
Ich hätte gern den letzten Teil der Dateiname "12223234_2324" in der CSV Datei in eine weitere Spalte als letzte Spalte ergänzt. Etwa so:
Header1; Header2; Header3;Header4
20001;10;2;12223234_2324
20002;10;2;12223234_2324
20003;11;0;12223234_2324
Header4 kann auch die Nummer 12223234_2324 enthalten.
Vielen Dank schon mal für Euere Hilfe !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 315243
Url: https://administrator.de/forum/ergaenzen-einer-csv-datei-als-letze-spalte-mit-teil-der-dateiname-315243.html
Ausgedruckt am: 06.05.2025 um 16:05 Uhr
11 Kommentare
Neuester Kommentar

@echo off
set "folder=c:\myfiles"
powershell -Executionpolicy Bypass -Command "gci '%folder%' -Filter *.csv -Recurse | %%{$csv = Import-csv $_.Fullname -delimiter ';'; $csv | add-member -Membertype NoteProperty -Name 'Header 4' -Value ($_.Basename.split('_',3)[2]) -Force; $csv | export-csv $_.Fullname -delimiter ';' -NoType -Encoding UTF8}"

Did a small correction above, sorry.

Powershell ist kein Tool sondern eine mächtige Scriptsprache
mit der Linux Bash vergleichbar aber Objektorientiert.
Dieses Script unter beliebeigem Namen mit der Endung .ps1 abspeichern und in der PowerShell
ausführen [Win]+R Powershell.exe oder aus einem CMD- Fenster starten.
PS-Scripte müssen mit Pfad (ggfs .\Name) aufgerufen werden.
Aus diesen Ausgangsdaten:
Erzeugt das Scipt dies (zur Sicherheit mit vorangestelltwem "New_")
Hoffe das hilft
LotPings
mit der Linux Bash vergleichbar aber Objektorientiert.
Dieses Script unter beliebeigem Namen mit der Endung .ps1 abspeichern und in der PowerShell
ausführen [Win]+R Powershell.exe oder aus einem CMD- Fenster starten.
PS-Scripte müssen mit Pfad (ggfs .\Name) aufgerufen werden.
## Powershell script Add-Col.ps1
$Folder="C:\Test\2016-09\14 "
Get-ChildItem $Folder -Filter dummy*.csv -Recurse |
ForEach-Object {
$Col4 = $_.Basename.split('_',3)[2]
Import-Csv $_.Fullname -delimiter ';'|
Select-Object *,@{Name='Header 4';Expression={$Col4}} |
Export-Csv ($_.DirectoryName + '\New_' + $_.Name) -delimiter ';' -NoType
}
Aus diesen Ausgangsdaten:
Dummy1_Dummy2_12223234_1234.csv
Header1; Header2; Header3
20001;10;2
20002;10;2
20003;11;0
Dummy1_Dummy2_22232345_2345.csv
Header1; Header2; Header3
20001;10;2
20002;10;2
20003;11;0
Erzeugt das Scipt dies (zur Sicherheit mit vorangestelltwem "New_")
New_Dummy1_Dummy2_12223234_1234.csv
"Header1";"Header2";"Header3";"Header 4"
"20001";"10";"2";"12223234_1234"
"20002";"10";"2";"12223234_1234"
"20003";"11";"0";"12223234_1234"
New_Dummy1_Dummy2_22232345_2345.csv
"Header1";"Header2";"Header3";"Header 4"
"20001";"10";"2";"22232345_2345"
"20002";"10";"2";"22232345_2345"
"20003";"11";"0";"22232345_2345"
Hoffe das hilft
LotPings

It works, tested it! This is powershell code which has to be run directly in a batch file not in a ps1.
I made it this way to make it easy for you to run it.
I think you have modified it wrong, or your powershell is not up to date.
I made it this way to make it easy for you to run it.
I think you have modified it wrong, or your powershell is not up to date.

Hallo moltiti,
ein Kompromiss ist
Gruß
LotPings
ein Kompromiss ist
Set-ExecutionPolicy RemoteSigned
LotPings