BATCH Verschiedene Textdateien vereinheitlichen
hallo zusammen,
ich hab 2 txt files vorliegen aus denen ich einen einheitlichen glossar erstellen soll. problem dabei ist, das die txt files unterschiedliche strukturen besitzen. ich möchte die files nun vereinheitlichen und für eine spätere datenbank bezogene bearbeitung vorbereiten.
hier zum beispiel:
TextDatei1:
TextDatei2:
ich möchte nun gerne die daten aus den txt files so auslesen, das sich folgende file ergibt:
problem dabei ist das in TextDatei1 die Begriffserklärung nach einem Doppelpunkt und ohne Zeilenumbruch beginnt (siehe Bild1):
Begriff1: blablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablablablablablabla
Begriff2: blablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
in TextDatei2 beginnt die Begriffserklärung ohne Doppelpunkt und nach einem Zeilenumbruch (siehe Bild2):
Begriff1
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablablablablablabla
Begriff2
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
wie kann ich die beiden Textdateien nun möglichst einheitlich zusammenführen?
die ergebnis txt sollte möglichst so aussehen:
Begriff1: blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
Begriff2: blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
bin für jede hilfestellung dankbar.
grüße
ich hab 2 txt files vorliegen aus denen ich einen einheitlichen glossar erstellen soll. problem dabei ist, das die txt files unterschiedliche strukturen besitzen. ich möchte die files nun vereinheitlichen und für eine spätere datenbank bezogene bearbeitung vorbereiten.
hier zum beispiel:
TextDatei1:
TextDatei2:
ich möchte nun gerne die daten aus den txt files so auslesen, das sich folgende file ergibt:
problem dabei ist das in TextDatei1 die Begriffserklärung nach einem Doppelpunkt und ohne Zeilenumbruch beginnt (siehe Bild1):
Begriff1: blablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablablablablablabla
Begriff2: blablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
in TextDatei2 beginnt die Begriffserklärung ohne Doppelpunkt und nach einem Zeilenumbruch (siehe Bild2):
Begriff1
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablablablablablabla
Begriff2
blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
wie kann ich die beiden Textdateien nun möglichst einheitlich zusammenführen?
die ergebnis txt sollte möglichst so aussehen:
Begriff1: blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
Begriff2: blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
bin für jede hilfestellung dankbar.
grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 82937
Url: https://administrator.de/forum/batch-verschiedene-textdateien-vereinheitlichen-82937.html
Ausgedruckt am: 16.05.2025 um 17:05 Uhr
3 Kommentare
Neuester Kommentar
Teste mal obs damit geht:
Von jeder Datei wird eine Neue kopie angelegt die entsprechend umformatiert ist. Willst du das die Dateien überschrieben werden ist das natürlich auch möglich. Aber est mal testen obs so funktioniert.
@echo off & setlocal
set firstline=1
FOR /F "delims=" %%f in ('dir /a-d /b *.txt') do (
echo.
echo Verarbeite Datei: %%f
echo Erzeuge Datei: %%~nf_neu%%~xf
if exist "%%~nf_neu%%~xf" del "%%~nf_neu%%~xf"
FOR /F "tokens=1,2,* delims=:" %%i in ('findstr /n .* "%%f"') do (
if "%%j" equ "" (
echo.>>"%%~nf_neu%%~xf"
) else (
if "%%k" equ "" (
call:write2 "%%j" "%%~nf_neu%%~xf"
) else (
call:write1 "%%j" "%%k" "%%~nf_neu%%~xf"
)
)
)
)
goto:eof
:write2
if %firstline% equ 1 (
echo %~1:>>%2
set firstline=0
goto:eof
)
if %firstline% equ 0 (
echo %~1>>%2
set firstline=1
goto:eof
)
goto:eof
:write1
echo %~1:>>%3
set line=%~2
echo %line:~1%>>%3
goto:eof
Oh da hat mich woll der automatische Zeilenumbruch vom Browser reingelegt.
Dann versuchs mal damit:
Dann versuchs mal damit:
@echo off & setlocal
set firstline=1
FOR /F "delims=" %%f in ('dir /a-d /b *.txt') do (
echo.
echo Verarbeite Datei: %%f
echo Erzeuge Datei: %%~nf_neu%%~xf
if exist "%%~nf_neu%%~xf" del "%%~nf_neu%%~xf"
FOR /F "tokens=1,2,* delims=:" %%i in ('findstr /n .* "%%f"') do (
if "%%j" equ "" (
echo.>>"%%~nf_neu%%~xf"
) else (
if "%%k" equ "" (
call:writeit "%%j" "%%~nf_neu%%~xf"
) else (
echo %~1:%2>>"%%~nf_neu%%~xf"
)
)
)
)
goto:eof
:writeit
if %firstline% equ 1 (
set "line=%~1:"
set firstline=0
goto:eof
)
if %firstline% equ 0 (
echo %line=% %~1>>%2
set "line="
set firstline=1
goto:eof
)
goto:eof