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-Key: 600115

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

Printed on: May 11, 2024 at 00:05 o'clock

Mitglied: 145033
Solution 145033 Aug 28, 2020 updated at 10:07:38 (UTC)
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.
Member: andre-xs
andre-xs Aug 28, 2020 at 15:27:34 (UTC)
Goto Top
Vielen Dank, funktioniert perfekt...