.txt auslesen und unter entsprechenden Dateinamen auflisten!?
Hallo!
Die erste Hilfe war schon super, jetzt kommt das nächste Problem.
Habe folgendes zu lösen:
Habe zwei Exel Tabellen! Diese will ich vergleichen und etwas sinnvoll ergänzen.
Also in beiden sind in Spalte "A" Seriennummer eingetragen (die gleichen , nur andere reihenfolge). Nun möchte ich die Information der einen Tabelle der anderen hinzufügen, dies natürlich unter der selben Seriennummer ich sag mal in Spalte "D".
... wäre schön wenn jemand nen Ansatz oder besser ne lösung hat ; )
Die erste Hilfe war schon super, jetzt kommt das nächste Problem.
Habe folgendes zu lösen:
Habe zwei Exel Tabellen! Diese will ich vergleichen und etwas sinnvoll ergänzen.
Also in beiden sind in Spalte "A" Seriennummer eingetragen (die gleichen , nur andere reihenfolge). Nun möchte ich die Information der einen Tabelle der anderen hinzufügen, dies natürlich unter der selben Seriennummer ich sag mal in Spalte "D".
... wäre schön wenn jemand nen Ansatz oder besser ne lösung hat ; )
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 85116
Url: https://administrator.de/forum/txt-auslesen-und-unter-entsprechenden-dateinamen-auflisten-85116.html
Ausgedruckt am: 22.05.2025 um 12:05 Uhr
6 Kommentare
Neuester Kommentar
Hallo altamuli!
Hat jede Datei exakt den dargestellten Aufbau, und wenn nicht, woran sind zB die "Fehlerspeicher"-Zeilen zu erkennen?
Wäre es übrigens nicht sinnvoller, Datensätze zu bilden, also alle Daten einer Textdatei in einer einzigen Zeile (durch ein festgelegtes Trennzeichen voneinander abgegrenzt) zu speichern?
Grüße
bastla
Hat jede Datei exakt den dargestellten Aufbau, und wenn nicht, woran sind zB die "Fehlerspeicher"-Zeilen zu erkennen?
Wäre es übrigens nicht sinnvoller, Datensätze zu bilden, also alle Daten einer Textdatei in einer einzigen Zeile (durch ein festgelegtes Trennzeichen voneinander abgegrenzt) zu speichern?
Grüße
bastla
@bastla
@altamuli
Diese Form von Daten-Um- und Neuformatierung ist ja alles rein handwerklich machbar,
aber damit schaffst Du undokumentierte betriebliche Prozesse, die keiner kennt, keiner durchschaut und keiner pflegen kann.
["betriebliche Prozesse"= Da ich nicht annehme, dass Du zu Haus deine Kühlkörpersammlung verwaltest]
Bitte erzähl noch mal zwei Sätze zum Prozess selbst.
Irgend jemand hat Dir 27300 Einzeldateien mit reinen Schlüsselwerten in Deinen Ordner gelegt und Du sollst es lesbar machen? Oder was passiert da?
Grüße
Biber
Wäre es übrigens nicht sinnvoller, Datensätze zu bilden...
Unbedingt sogar. Denn es waren ja auch vorher welche....@altamuli
Diese Form von Daten-Um- und Neuformatierung ist ja alles rein handwerklich machbar,
aber damit schaffst Du undokumentierte betriebliche Prozesse, die keiner kennt, keiner durchschaut und keiner pflegen kann.
["betriebliche Prozesse"= Da ich nicht annehme, dass Du zu Haus deine Kühlkörpersammlung verwaltest]
Bitte erzähl noch mal zwei Sätze zum Prozess selbst.
Irgend jemand hat Dir 27300 Einzeldateien mit reinen Schlüsselwerten in Deinen Ordner gelegt und Du sollst es lesbar machen? Oder was passiert da?
Grüße
Biber
Hallo altamuli!
Wenn Du nur die einzelnen Zeilen als Datenfelder benötigst, könnte das so gehen:
Die Pfade/Dateinamen in den ersten beiden "set"-Zeilen kannst Du natürlich anpassen, wobei es vermutlich sinnvoll sein wird, zum Testen erst einmal nur ein paar Dateien in den Quellordner (oben: D:\Temp) zu legen.
Die Sammeldatei wird immer neu erzeugt und enthält zunächst eine Zeile mit den Feld-(Spalten-)überschriften.
Darunter folgt dann je eine Datenzeile für die einzelnen Dateien, wobei die Werte als Text an Excel übergeben werden sollen (wegen der Doppelpunkte würden diese ansonsten als Zeitangabe interpretiert) und daher unter Anführungszeichen gesetzt werden.
Die fertige .csv-Datei sollte sich direkt mit Excel öffnen lassen.
Grüße
bastla
Wenn Du nur die einzelnen Zeilen als Datenfelder benötigst, könnte das so gehen:
@echo off & setlocal
set "Dateien=D:\Temp\*.txt"
set "Sammel=D:\Sammel.csv"
echo Datei;Seriennummer;Fehlerspeicher01;Fehlerspeicher02;Fehlerspeicher03;Fehlerspeicher04;Fehlerspeicher05;Fehlerspeicher06;Fehlerspeicher07;Fehlerspeicher08;Fehlerspeicher09;Fehlerspeicher10;BasisSoftware;Software;Gerätetyp;ArtikelNummer;Betriebsstd.;InnenraumTemp.;KühlkörperTemp>"%Sammel%"
for %%d in ("%Dateien%") do call :ProcessFile "%%d"
goto :eof
:ProcessFile
set Zeile="%~n1"
for /f "usebackq delims=" %%i in (%1) do call :ProcessLine "%%i"
echo %Zeile%>>"%Sammel%"
goto :eof
:ProcessLine
set "Zeile=%Zeile%;%1"
goto :eof
Die Sammeldatei wird immer neu erzeugt und enthält zunächst eine Zeile mit den Feld-(Spalten-)überschriften.
Darunter folgt dann je eine Datenzeile für die einzelnen Dateien, wobei die Werte als Text an Excel übergeben werden sollen (wegen der Doppelpunkte würden diese ansonsten als Zeitangabe interpretiert) und daher unter Anführungszeichen gesetzt werden.
Die fertige .csv-Datei sollte sich direkt mit Excel öffnen lassen.
Grüße
bastla
Salü!
Hier noch eine Version mit VBScript, welche es in der gewünschten Formatierung in's Textfile schreibt! die Files müssen einfach im Ordner "files" liegen, welcher wiederum im gleichen verzeichnis liegt wie das scriptfile...
Das ganze kann man natürlich noch beliebig anpassen und verbessern...
Grüsse tacker
Hier noch eine Version mit VBScript, welche es in der gewünschten Formatierung in's Textfile schreibt! die Files müssen einfach im Ordner "files" liegen, welcher wiederum im gleichen verzeichnis liegt wie das scriptfile...
Das ganze kann man natürlich noch beliebig anpassen und verbessern...
dim fso, FSOoutputfile, FSOinputfile, fsofile, fsofolder, file
dim strOutputfile, i, array()
set fso = CreateObject("Scripting.Filesystemobject")
set fsofolder = fso.getfolder("files")
set fsofile = fsofolder.files
strOutputfile = "output.txt"
If fso.fileexists(strOutputfile) then
fso.deletefile(strOutputfile)
End If
For each file in fsofile
set FSOinputfile = fso.opentextfile(file, 1, false)
set FSOOutputfile = fso.opentextfile(strOutputfile,8, true)
i = 0
FSOoutputfile.writeline("Filename: " & file.name)
Do While FSOinputfile.AtEndOfStream = False
redim preserve array(i+1)
array(i) = FSOinputfile.readline
i = i + 1
loop
FSOoutputfile.writeline "Seriennummer" & array(0)
FSOoutputfile.writeline("Fehlerspeicher01" & array(1))
FSOoutputfile.writeline("Fehlerspeicher02" & array(2))
FSOoutputfile.writeline("Fehlerspeicher03" & array(3))
FSOoutputfile.writeline("Fehlerspeicher04" & array(4))
FSOoutputfile.writeline("Fehlerspeicher05" & array(5))
FSOoutputfile.writeline("Fehlerspeicher06" & array(6))
FSOoutputfile.writeline("Fehlerspeicher07" & array(7))
FSOoutputfile.writeline("Fehlerspeicher08" & array(8))
FSOoutputfile.writeline("Fehlerspeicher09" & array(9))
FSOoutputfile.writeline("Fehlerspeicher10" & array(10))
FSOoutputfile.writeline("BasisSoftware" & array(11))
FSOoutputfile.writeline("Software" & array(12))
FSOoutputfile.writeline("Gerätetyp" & array(13))
FSOoutputfile.writeline("ArtikelNummer" & array(14))
FSOoutputfile.writeline("Betriebsstd." & array(15))
FSOoutputfile.writeline("InnenraumTemp." & array(16))
FSOoutputfile.writeline("KühlkörperTemp" & array(17))
FSOoutputfile.writeline(" ")
FSOinputfile.close
FSOoutputfile.close
set FSOinputfile = Nothing
Set FSOoutputfile = Nothing
Next
Grüsse tacker