Textdatei in mehrere auftrennen inkl. Dateiname
Hallo,
ich bin ein totaler Neuling im Umgang und erstellen von Batchdateien.
Mein Problem ist, das ich eine Textdatei habe und die in mehrere Dateien(?.h, ?.c, ?.d usw.) auftrennen möchte.
Die Textdatei hat folgendes aussehen:
test.txt-----------
$ list konstants.h
Programmcode
$ list defs.d
Programmcode
$ list parameter.h
Programmcode
$
Ich hab mir die Batchdatei so vorgestellt:
1. nach „$ list “ suchen => ZeilenNR1
2. den Namen (z.B. parameter.h), der immer in der selben Zeile steht in die Variable Name speichern
3. nach dem nächsten „$ list “ suchen => ZeilenNR2
4. Neue Datei erstellen von (ZeilenNr1 + 1) bis (ZeilenNr2 - 1) mit dem Dateinamen Name (inkl. Dateiendung)
5. ZeilenNr1 = ZeilenNr2
6. und jetzt wieder ab Punkt 2 wiederholen
Kann mir dabei jemand helfen.
Super wäre es natürlich, wenn mir jemand eine Erklärung zur Batchdatei schreiben könnte, damit ich auch verstehe was ich da mache. Muss aber nicht sein! Nur wenn einer gerade Lust dazu hat.
Würde mich über zahlreiche Hilfe freuen, auch wenn es mir nur teilweise helfen kann.
Gruß ZizouDK
ich bin ein totaler Neuling im Umgang und erstellen von Batchdateien.
Mein Problem ist, das ich eine Textdatei habe und die in mehrere Dateien(?.h, ?.c, ?.d usw.) auftrennen möchte.
Die Textdatei hat folgendes aussehen:
test.txt-----------
$ list konstants.h
Programmcode
$ list defs.d
Programmcode
$ list parameter.h
Programmcode
$
Ich hab mir die Batchdatei so vorgestellt:
1. nach „$ list “ suchen => ZeilenNR1
2. den Namen (z.B. parameter.h), der immer in der selben Zeile steht in die Variable Name speichern
3. nach dem nächsten „$ list “ suchen => ZeilenNR2
4. Neue Datei erstellen von (ZeilenNr1 + 1) bis (ZeilenNr2 - 1) mit dem Dateinamen Name (inkl. Dateiendung)
5. ZeilenNr1 = ZeilenNr2
6. und jetzt wieder ab Punkt 2 wiederholen
Kann mir dabei jemand helfen.
Super wäre es natürlich, wenn mir jemand eine Erklärung zur Batchdatei schreiben könnte, damit ich auch verstehe was ich da mache. Muss aber nicht sein! Nur wenn einer gerade Lust dazu hat.
Würde mich über zahlreiche Hilfe freuen, auch wenn es mir nur teilweise helfen kann.
Gruß ZizouDK
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 62846
Url: https://administrator.de/forum/textdatei-in-mehrere-auftrennen-inkl-dateiname-62846.html
Ausgedruckt am: 09.04.2025 um 08:04 Uhr
8 Kommentare
Neuester Kommentar
Also im ersten Ansatz würd ichs so lösen:
Hier wird diese Datei Zeile für Zeile durchlaufen und an "doline" übergeben.
Dort wird geprüft ob die ersten 7 Zeichen der Zeile "$ list " lauten. Wenn ja wird der Teil danach als Dateiname genommen (%filename%). Wenn nein wird die ganze Zeile in die Datei geschrieben die als Dateiname gespeichert wurde (%filename%).
miniversum
@echo off
for /F "delims=" %%a in (test.txt) do call:doline "%%a"
pause
goto:eof
:doline
set "line=%~1"
if "%line:~0,7%" equ "$ list " (
set "filename=%line:~7%"
) else (
echo %line%>>"%filename%"
)
goto:eof
Hier wird diese Datei Zeile für Zeile durchlaufen und an "doline" übergeben.
Dort wird geprüft ob die ersten 7 Zeichen der Zeile "$ list " lauten. Wenn ja wird der Teil danach als Dateiname genommen (%filename%). Wenn nein wird die ganze Zeile in die Datei geschrieben die als Dateiname gespeichert wurde (%filename%).
miniversum
Versuchs mal obs so geht:
miniversum
@echo off
for /F "tokens=1,* delims=:" %%a in ('findstr /n $ "test.txt"') do call:doline "%%b" "%%a"
pause
goto:eof
:doline
set "line=%~1"
if "%line:~0,7%" equ "$ list " (
set "filename=%line:~7%"
) else (
if "%line%" equ "" (
echo.>>"%filename%"
) else (
echo %line%>>"%filename%"
)
)
goto:eof
miniversum
Zum ersten teil:
hab das Problem gefunden. Damit sollte es gehn:
Zum zweiten Teil:
Ne tut mir leid davon hab ich keine Ahnung wie und ob das mit dem Hyperterminal geht. Mach doch ein extra Posting draus.
miniversum
hab das Problem gefunden. Damit sollte es gehn:
@echo off
for /F "tokens=1,* delims=:" %%a in ('findstr /n $ "test.txt"') do call:doline "%%b" "%%a"
pause
goto:eof
:doline
set "line=%~1"
if "%line:~0,7%" equ "$ list " (
set "filename=%line:~7%"
) else (
if "%line%" equ "" (
echo. 1>>"%filename%"
) else (
echo %line% 1>>"%filename%"
)
)
goto:eof
Ne tut mir leid davon hab ich keine Ahnung wie und ob das mit dem Hyperterminal geht. Mach doch ein extra Posting draus.
miniversum