christian181005
Goto Top

Batch Textfeld darf nicht leer sein

Hallo

Das ist mein Code ich will aber machen dass man bei username;vorname;nachname und bei passwort etwas eingegeben werden muss!
MFG Christian

@echo off
title REGISTRIEREN
cd C:\Users\Gertrude Domes\Desktop\Login\Datenbank\Benutzer
echo Registration!
echo Bitte keine Leerzeichen und Sondereichen verwenden!!
:start
set /p username=username:
goto prüfung
:weiter
cd C:\Users\Gertrude Domes\Desktop\Login\Datenbank\Benutzer
set /p vorname=vorname:
set /p nachname=nachname:
set /p passwort=passwort:
mkdir %vorname%_%nachname%-%username%
cd C:\Users\Gertrude Domes\Desktop\Login\Datenbank\Benutzer\%vorname%_%nachname%-%username%
goto ende

:prüfung
cd C:\Users\Gertrude Domes\Desktop\Login\Datenbank\Username
if exist %username%.txt goto existiert
goto weiter

:existiert
cls
echo username existiert bereits!
echo Bitte anderen wählen!
cd C:\Users\Gertrude Domes\Desktop\Login\Datenbank\Benutzer
pause
cls
goto start

:ende
cd C:\Users\Gertrude Domes\Desktop\Login\Datenbank\Benutzer
echo %vorname% > vorname.txt
echo %nachname% > nachname.txt
echo %username% > username.txt
echo %passwort% > passwort.txt
echo Du hast dich erfolgreich Registriert!

cd C:\Users\Gertrude Domes\Desktop\Login\Datenbank\Username
echo 0 > %username%.txt
pause
exit

Content-Key: 400497

Url: https://administrator.de/contentid/400497

Printed on: April 19, 2024 at 02:04 o'clock

Member: rubberman
rubberman Feb 05, 2019 at 17:09:22 (UTC)
Goto Top
Einfach in einer Schleife prüfen ob die Variable definiert wurde. Falls nicht, lässt du die Schleife iterieren und somit die Eingabe wiederholen.
Proof of concept:
@echo off &setlocal
::Hauptprogramm
call :getinput vorname "Vorname: "  
call :getinput nachname "Nachname: "  
call :getinput passwort "Passwort: "  

echo %vorname% %nachname% %passwort%
pause
exit /b


:: Subroutine
:getinput
set "%~1="  
set /p "%~1=%~2"  
if not defined %~1 goto getinput
exit /b

Grüße
Steffen
Member: Pjordorf
Pjordorf Feb 05, 2019 updated at 17:33:54 (UTC)
Goto Top
Hallo,

Zitat von @Christian181005:
Das ist mein Code
2 Ranbemerkungen
1. Nutze keien Umlaute in dein Skript. Je nach OS und Version und genutzter Editor kommen sonst Lustige sachen aber nicht das was eingegeben hast. Beispiel: Prüfunbg eingeben, aber Pr³fen sagt dein Skript.
2. In Pfade oder Dateinamen keine Leerstellen verwenden oder in Anführungszeichen klammern. Ein Leerzeichen ist für eine Batch ein gültiges Trennzeichen.

goto prüfung
cd C:\Users\Gertrude Domes\Desktop\Login\Datenbank\Username

Gruß,
Peter
Member: Christian181005
Christian181005 Feb 05, 2019 at 17:28:54 (UTC)
Goto Top
Ich habe die Kodierung umgestellt deshalb funktionieren die Umlaute. PC namen kann ich nicht umstellen.
Member: Christian181005
Christian181005 Feb 05, 2019 at 17:29:55 (UTC)
Goto Top
Kannst du die Schleife gleich in meinem Code integrieren. Ich kenne mich null mit Schleifen aus.
Member: Pjordorf
Pjordorf Feb 05, 2019 updated at 17:41:58 (UTC)
Goto Top
Hallo,

Zitat von @Christian181005:
Ich habe die Kodierung umgestellt deshalb funktionieren die Umlaute
Und da wo du nicht umgestellt hast bzw nicht darfst oder andere Software mit der Umstellung nicht klar kommen? Umlaute ist wie das verwenden von Französischen oder Spanische oder Chinesischen Sonderzeichen. Und nicht jedes OS und Software kommt damit klar. Ein NoGo.

PC namen kann ich nicht umstellen.
Du sollst auch keinen Benutzernamen ändern. Du sollst in deinen Code solche sachen mit Anführungszeichen umschliessen. Mehr nicht.

Kannst du die Schleife gleich in meinem Code integrieren. Ich kenne mich null mit Schleifen aus.
https://www.fisibits.de/blog/2014/05/batch-grundlagen-schleifen/
https://www.robvanderwoude.com/for.php
Tutorial zur FOR-Schleife

Gruß,
Peter
Member: rubberman
rubberman Feb 05, 2019 updated at 17:45:24 (UTC)
Goto Top
Kannst du
Kann ich, bringt dir aber keinen Lerneffekt. Code lesen, Code verstehen und selbst einbauen. Die Schleife ist nur das GOTO, das man hier ausnahmsweise mal benötigt, da Batch keine while-Schleifen kennt. Ansonsten sind GOTOs eine der böswilligsten sprachlichen Mittel die Batch zu bieten hat und du solltest sie meiden wie die Pest. Selbst so eine antiquierte und längst überholte Sprache wie Batch kann man mit Subroutinen zumindest prozedural schreiben. Dann bleibt das Script wenigstens halbwegs lesbar und wartbar. Anderenfalls weißt du irgendwann selbst nicht mehr welche verschlungenen Wege der Programmablauf nimmt. Überarbeite das mal bei deinem bisherigen Code.