andre-xs
Goto Top

Dateinamen als neue Spalte in csv- oder txt-Datei einfügen?

Wir haben in einem Forschungsprojekt die Daten eines Experiments als Text-Datei (Spalten durch Leerzeichen getrennt) und als csv-Datei vorliegen. Jede Datei hat theoretisch 230 Zeilen, jede Zeile besteht aus einer Reihe von Messwerten. Zur einfacheren Auswertung sollen alle Dateien in eine grosse Datei gepackt werden (copy *.txt Alle.txt). Sie sollen dann später in Excel mittels Pivot-Tabellen ausgewertet werden. Allerdings bräuchten wir dafür noch die Info in jeder Zeile, aus welcher Datei der jeweilige Messwert stammt.

Momentan ist es also:
DateiA.txt:
Data_c1r1 Data_c2r1 Data_c3r1 ...
Data_c1r2 Data_c2r2 Data_c3r2 ...
...

DateiB.txt:
Data_c1r1 Data_c2r1 Data_c3r1 ...
Data_c1r2 Data_c2r2 Data_c3r2 ...
...

Und wir bräuchten:
DateiA Data_c1r1 Data_c2r1 Data_c3r1 ...
DataiA Data_c1r2 Data_c2r2 Data_c3r2 ...
...

DateiB Data_c1r1 Data_c2r1 Data_c3r1 ...
DataiB Data_c1r2 Data_c2r2 Data_c3r2 ...
...

Die 'Details' sind nicht wichtig, also ob der Dateiname in die erste Spalte kommt, oder hinten angehängt wird, ob es mit oder ohne Dateiendung ist, usw. Wir müssen nur den Dateinamen da irgendwie reinkriegen...

Kann als Batch/cmd Datei oder als Powershell oder sowas sein, kenne mich dort allerdings nicht so gut aus, d.h. Tips um Anfängerfehler zu vermeiden wären super face-smile Auch eine halbe Automatisierung wäre schon hilfreich...

Viele Grüße,
Andre

Content-ID: 600115

Url: https://administrator.de/contentid/600115

Ausgedruckt am: 14.11.2024 um 17:11 Uhr

145033
Lösung 145033 28.08.2020 aktualisiert um 12:07:38 Uhr
Goto Top
Batch
@echo off &setlocal
set "ordner=D:\Daten"  
set "ausgabe=D:\ausgabe.csv"  
>"%ausgabe%" (for %%a in ("%ordner%\*.csv") do for /f "usebackq delims=" %%b in ("%%a") do echo.%%~nxa %%b)  
Powershell
$ordner = 'D:\Daten'  
$ausgabe = 'D:\ausgabe.csv'  
ls $ordner -Filter *.csv -File -PipelineVariable file | %{
    (gc $_.Fullname) | %{$file.Name + " " + $_}  
} | sc $ausgabe
Alternativ auch so etwas kürzer mit select-string ebenfalls als Powershell Skript
$ordner = 'D:\Daten'  
$ausgabe = 'D:\ausgabe.csv'  
select-string -Path "$ordner\*.csv" -Pattern '.' -AllMatches | %{$_.Filename + " " + $_.Line} | sc $ausgabe  

Kann als Batch/cmd Datei oder als Powershell oder sowas sein, kenne mich dort allerdings nicht so gut aus, d.h. Tips um Anfängerfehler zu vermeiden wären super
Dafür gibt's die Administrator.de Suchfunktion face-smile.
andre-xs
andre-xs 28.08.2020 um 17:27:34 Uhr
Goto Top
Vielen Dank, funktioniert perfekt...