
138701
31.01.2019
Datenbank in Textdokument?
Ich habe folgendes Problem:
Ich arbeite mit Batch und möchte eine Textdatei bearbeiten:
C:\test.txt
Marco ; Mustermann
Annika ; Schwarz
Janina ; Müller
Jetzt soll es 3 Optionen geben:
A: Hinzufügen
Name und Nachname werden einzeln eingegeben und in eine neue Zeile abgespeichert.
B: Bearbeiten
Name und Nachname werden einzeln eingegeben und überschreiben die ausgewählte Zeile.
C: Löschen
Eine ganze Zeile mitsamt Zeilenumbruch wird gelöscht.
OPTIONAL:
Man kann eine Variable statt einem Namen eingeben:
(set var=Mustermann)
Option:_
>>>B
Zeile:_
>>>3
Name:_
>>>Janina
Nachname:_
>>>var
Name von Zeile 3 auf Janina Mustermann aktualisiert!
Ich danke euch schon einmal im Voraus für die Hilfe!
Ich arbeite mit Batch und möchte eine Textdatei bearbeiten:
C:\test.txt
Marco ; Mustermann
Annika ; Schwarz
Janina ; Müller
Jetzt soll es 3 Optionen geben:
A: Hinzufügen
Name und Nachname werden einzeln eingegeben und in eine neue Zeile abgespeichert.
B: Bearbeiten
Name und Nachname werden einzeln eingegeben und überschreiben die ausgewählte Zeile.
C: Löschen
Eine ganze Zeile mitsamt Zeilenumbruch wird gelöscht.
OPTIONAL:
Man kann eine Variable statt einem Namen eingeben:
(set var=Mustermann)
Option:_
>>>B
Zeile:_
>>>3
Name:_
>>>Janina
Nachname:_
>>>var
Name von Zeile 3 auf Janina Mustermann aktualisiert!
Ich danke euch schon einmal im Voraus für die Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 400013
Url: https://administrator.de/forum/datenbank-in-textdokument-400013.html
Ausgedruckt am: 23.04.2025 um 07:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
was hast Du bisher an Code? - Sprich was bisher selbst erstellt? Zeuge uns doch mal den Code, welchen Du bisher entwickelt hast.
Wenn es unbedingt Batch sein sollte, hier etwas Lesefutter bzgl. Windows Batch:
Ansonsten ist eine Textdatei KEINE gute Idee für eine Datenbank.
Gruss Penny
was hast Du bisher an Code? - Sprich was bisher selbst erstellt? Zeuge uns doch mal den Code, welchen Du bisher entwickelt hast.
Wenn es unbedingt Batch sein sollte, hier etwas Lesefutter bzgl. Windows Batch:
- Windows Batch Grundlagen
- Batch - ein paar Basics die man kennen sollte
- Workshop Batch for Runaways - Part I
- Workshop Batch for Runaways - Part II
- Workshop Batch for Runaways - Part III
- HowTo - Wie man Subroutinen in Batchfiles erstellt
- Tutorial zur FOR-Schleife
Ansonsten ist eine Textdatei KEINE gute Idee für eine Datenbank.
Gruss Penny
Moin,
Sagt der Code dann auch Papa zu mir?
Ich habe mich auch gefragt, was das soll. Ist das eine Hausaufgabe eines vollkommen durchgeknallten Dozenten? Wieso Textdatei und Batch? Wenn schon, dann wenigstens Powershell, die mit csv halbwegs umgehen kann ...
Die erste Aufgabe ist ganz einfach:
Den Rest möchte ich nicht mit Batches lösen müssen.
Liebe Grüße
Erik
Sagt der Code dann auch Papa zu mir?
Ansonsten ist eine Textdatei KEINE gute Idee für eine Datenbank.
Ich habe mich auch gefragt, was das soll. Ist das eine Hausaufgabe eines vollkommen durchgeknallten Dozenten? Wieso Textdatei und Batch? Wenn schon, dann wenigstens Powershell, die mit csv halbwegs umgehen kann ...
Die erste Aufgabe ist ganz einfach:
echo Vorname;Nachname >>test.txt
Den Rest möchte ich nicht mit Batches lösen müssen.
Liebe Grüße
Erik

Ich habe folgendes Problem:
Kein Problem sondern ein Krampf. Wohl mal wieder eine Aufgabe eines Prof. jenseits der Rente.Wenn es dir hier primär um das Üben von Batch geht (hoffentlich!) und ausdrücklich nicht um produktives dann tobe dich hiermit mal aus.
Batch ist für einfache Routineaufgaben geeignet aber um Gottes Willen nicht für Datenbanken (würg...).
Gehen tut alles aber ob man sich das antun will ...nicht wirklich. Lerne besser gleich SQL/PS & Co. ...
@echo off & setlocal
chcp 1252
set "DBFILE=.\db.txt"
:MAINMENU
cls
echo.
echo =============== MENU ===============
echo.
echo [1] User anzeigen
echo.
echo [2] User erstellen
echo.
echo [3] User bearbeiten
echo.
echo [4] User löschen
echo.
echo [5] Ende
echo.
choice /C 12345 /M "Bitte wählen:"
if "%ERRORLEVEL%" == "255" goto :EOF
if %ERRORLEVEL% == 5 goto :EOF
if %ERRORLEVEL% == 4 goto :DELETEUSER
if %ERRORLEVEL% == 3 goto :EDITUSER
if %ERRORLEVEL% == 2 goto :CREATEUSER
if %ERRORLEVEL% == 1 goto :SHOWUSER
if %ERRORLEVEL% == 0 goto :EOF
goto :EOF
:SHOWUSER
cls
echo.
echo ==== BENUTZER ANZEIGEN ====
echo.
if not exist "%DBFILE%" (
echo Es gibt noch keine User. Bitte erstellen sie erst welche.
timeout /t 2
goto MAINMENU
)
echo NACHNAME, VORNAME
echo =================
for /f "usebackq tokens=1-2 delims=;" %%a in ("%DBFILE%") DO echo %%b, %%a
echo.
pause
goto MAINMENU
:CREATEUSER
cls
echo ==== BENUTZER ERSTELLEN ====
echo.
set /p "VORNAME=Vorname eingeben: "
if "%VORNAME%" == "" (
echo Fehler! Vorname darf nicht leer sein
echo.
timeout /t 2
goto CREATEUSER
)
set /p "NACHNAME=Nachname eingeben: "
if "%NACHNAME%" == "" (
echo Fehler! Nachname darf nicht leer sein
echo.
timeout /t 2
goto CREATEUSER
)
echo.
call :USEREXISTS "%VORNAME%;%NACHNAME%" && (
echo User mit diesen Namen existiert schon! Eingabe bitte wiederholen.
echo.
timeout /t 2
goto CREATEUSER
) || (
>>"%DBFILE%" echo.%VORNAME%;%NACHNAME%
echo Benutzer '%VORNAME% %NACHNAME%' wurde gespeichert.
echo.
timeout /t 2
)
goto MAINMENU
:EDITUSER
cls
echo ==== BENUTZER BEARBEITEN ====
echo.
set /p "VORNAME=Bestehenden Vornamen des Users eingeben: "
set /p "NACHNAME=Bestehenden Nachnamen des Users eingeben: "
echo.
call :USEREXISTS "%VORNAME%;%NACHNAME%" && (
findstr /ilvc:"%VORNAME%;%NACHNAME%" "%DBFILE%" >"%TEMP%\db.txt" & move "%TEMP%\db.txt" "%DBFILE%" >nul
set /p "VORNAME=Neuen Vornamen eingeben: "
set /p "NACHNAME=Neuen Nachnamen eingeben: "
setlocal ENABLEDELAYEDEXPANSION
>>"%DBFILE%" echo.!VORNAME!;!NACHNAME!
echo.
echo. Benutzer '!VORNAME! !NACHNAME!' wurde erstellt.
endlocal
timeout /t 2
goto MAINMENU
) || (
echo Benutzer '%VORNAME% %NACHNAME%' existiert nicht! Eingabe wiederholen.
echo.
timeout /t 2
goto EDITUSER
)
goto MAINMENU
:DELETEUSER
cls
echo ==== BENUTZER LÖSCHEN ====
echo.
set /p "VORNAME=Bestehenden Vornamen des Users eingeben: "
set /p "NACHNAME=Bestehenden Nachnamen des Users eingeben: "
echo.
call :USEREXISTS "%VORNAME%;%NACHNAME%" && (
findstr /ilvc:"%VORNAME%;%NACHNAME%" "%DBFILE%" >"%TEMP%\db.txt" & move "%TEMP%\db.txt" "%DBFILE%" >nul
echo. Benutzer '%VORNAME% %NACHNAME%' wurde gelöscht.
timeout /t 2
goto MAINMENU
) || (
echo Benutzer '%VORNAME% %NACHNAME%' existiert nicht! Eingabe wiederholen.
echo.
timeout /t 2
goto DELETEUSER
)
:USEREXISTS
findstr /ibelc:"%~1" "%DBFILE%" >nul 2>&1 && exit /b 0 || exit /b 1

findstr /?
hilft für die Optionen.findstr /ibelc
Bedeutet/i = suche Case insensitive
/b = Suche vom Anfang des Strings an
/e = Suche vom Ende des Strings an
/l = Suche nach normalen Strings nicht nach Regex
/c = Sucht nach Zeichenfolge buchstabengetreu.
"%~1"
Bedeutet der erste übergebene Parameter an die Subprozedur = Suchname"%DBFILE%"
Das Datenbankfile>nul 2>&1
Bedeutet leite STERR nach STDOUT UM und das ganze ins Nirvana damit keine Ausgabe erzeugt wird. && exit /b 0
Bedeutet beende Subprozedur mit Exit-Code 0 wenn User gefunden wurde