Mehrere Textdateien mit Datumsstempel in einer Textdatei pro Tag zusammenfassen
Guten Morgen an alle,
ich beschäftige mich seit mehreren Tagen mit einem Script, wobei ich leider keine Lösung finden kann. Ich hoffe, ihr könnt mir dabei helfen...
Ich bekomme einmal im Monat Textdateien auf ein Laufwerk gestellt (zwischen 800 und 1200 Dateien). Da das ganze etwas unübersichtlich ist, möchte ich diese pro Tag in eine Textdatei zusammenfassen. Dabei haben alle Dateien dieselbe Semantik:
Zur Erklärung, am Anfang der Datei ist die Referenznummer (C5376_CBEM475660BLAS) gefolgt vom Datum und Uhrzeit (1603080913). Was ich erreichen will, ist, für jeden Tag eine Textdatei mit dem Namen 160308.txt zu generieren und die Inhalte der einzelnen Dateien dort einzufügen.
Es ist wichtig, daß die Referenznummer mit in die neue Datei geschrieben wird.
So sollte das Ergebnis zum Beispiel aussehen:
Das war die grundsätzliche Aufgabenstellung.
Ich habe, wie schon oben erwähnt, angefangen ein Script zu basteln. Ich bin leider kein professioneller Scripter oder Programmierer, und würde mich über Anregungen sehr freuen:
Zur Erklärung: Ich lese die Dateien aus und schreibe das Ergebnis in eine Textdatei DAT.txt (ich war mir nicht sicher, ob dieser Schritt notwendig ist). Danach erstelle ich eine Datei Dupl.txt, in welche ich das enthaltene Datum der Dateien ohne Duplikate schreibe.
Ich komme nur an dem Punkt nicht weiter, an dem ich die Dateien wieder zusammenfügen müßte.
Für eure Mühen und Hilfestellungen möchte ich mich schon jetzt ganz herzlich bedanken.
Viele Grüße
Menorax
ich beschäftige mich seit mehreren Tagen mit einem Script, wobei ich leider keine Lösung finden kann. Ich hoffe, ihr könnt mir dabei helfen...
Ich bekomme einmal im Monat Textdateien auf ein Laufwerk gestellt (zwischen 800 und 1200 Dateien). Da das ganze etwas unübersichtlich ist, möchte ich diese pro Tag in eine Textdatei zusammenfassen. Dabei haben alle Dateien dieselbe Semantik:
C1389_HBOR551619BLAS1603300750.txt
C1395_KOSK577905BLAS1603300858.txt
C5376_CBEM475660BLAS1603080913.txt
Zur Erklärung, am Anfang der Datei ist die Referenznummer (C5376_CBEM475660BLAS) gefolgt vom Datum und Uhrzeit (1603080913). Was ich erreichen will, ist, für jeden Tag eine Textdatei mit dem Namen 160308.txt zu generieren und die Inhalte der einzelnen Dateien dort einzufügen.
Es ist wichtig, daß die Referenznummer mit in die neue Datei geschrieben wird.
So sollte das Ergebnis zum Beispiel aussehen:
Referenznummer: C1389_HBOR551619BLAS
Inhalt der Datei C1389_HBOR551619BLAS1603300750.txt
Referenznummer: C1395_KOSK577905BLAS
Inhalt der Datei C1395_KOSK577905BLAS1603300858.txt
usw.
Das war die grundsätzliche Aufgabenstellung.
Ich habe, wie schon oben erwähnt, angefangen ein Script zu basteln. Ich bin leider kein professioneller Scripter oder Programmierer, und würde mich über Anregungen sehr freuen:
@echo OFF
setlocal ENABLEDELAYEDEXPANSION
set "Duplikate=Dupl.txt"
copy nul "%Duplikate%">nul
for /f %%F in ('dir /b /O-N "C*.txt"') do (
set MVC=%%~nF
echo !MVC:~-10,6!_%%F >> DAT.txt
)
for /f %%G in (DAT.txt) do set MVD=%%G & call :Prozess1
:Prozess1
findstr /b /c:"%MVD:~,6%" %Duplikate% > nul || >> %Duplikate% echo %MVD:~,6%
goto :eof
endlocal
Zur Erklärung: Ich lese die Dateien aus und schreibe das Ergebnis in eine Textdatei DAT.txt (ich war mir nicht sicher, ob dieser Schritt notwendig ist). Danach erstelle ich eine Datei Dupl.txt, in welche ich das enthaltene Datum der Dateien ohne Duplikate schreibe.
Ich komme nur an dem Punkt nicht weiter, an dem ich die Dateien wieder zusammenfügen müßte.
Für eure Mühen und Hilfestellungen möchte ich mich schon jetzt ganz herzlich bedanken.
Viele Grüße
Menorax
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 301657
Url: https://administrator.de/forum/mehrere-textdateien-mit-datumsstempel-in-einer-textdatei-pro-tag-zusammenfassen-301657.html
Ausgedruckt am: 15.04.2025 um 19:04 Uhr
9 Kommentare
Neuester Kommentar

Elegant mit Powershell so:
Gruß jodel32
$quelle = 'c:\quelle'
$ziel = 'c:\ziel'
gci $quelle -Filter *.txt | group {[regex]::match($_.Basename,'(\d+)\d{4}$').Groups[1].Value} | %{
$d = $_.Name
$_.Group | %{
$refnum = [regex]::match($_.Basename,'^(.*?)(\d+)$').Groups[1].Value
@("Referenznummer: $refnum" ,(gc $_.Fullname)) | Add-Content "$ziel\$d.txt"
}
}

Hä ??? Wie sollte ich das, wenn ich deinen Beitrag beim Schreiben meines Skriptes noch nicht gesehen hatte ..., sorry aber da hast du was falsch hineininterpretiert Tiberius.
p.s. in deinem Skript fehlt noch die zusätzliche Zeile mit der REF-Nummer über jedem Textabschnitt.
p.s. in deinem Skript fehlt noch die zusätzliche Zeile mit der REF-Nummer über jedem Textabschnitt.

Doch das geht natürlich auch
Ungetestet, da gerade unterwegs, etwa so
Ungetestet, da gerade unterwegs, etwa so
@echo off & setlocal ENABLEDELAYEDEXPANSION
set "quelle=C:\quelle"
set "ziel=C:\ziel"
for %%a in ("%quelle%\*.txt") do @(
set "name=%%~na"
set "fdate=!name:~20,6!"
>>"%ziel%\!fdate!.txt" (
echo Referenznummmer: !name:~0,-10!
type "%%a"
)
)