Passwort überprüfung
Hallo,
ich bin am ende ich weiß nicht was hier falsch ist:
Kann mir da jmd. weiterhelfen?
Danke :D
[Edit Biber] Codeformatierung ergänzt. [/Edit]
ich bin am ende ich weiß nicht was hier falsch ist:
@echo off
cls
echo Gebe Hier dein Passwort ein:
echo.
set /p %ppasswort%=
FOR /f %%f IN (config.txt) DO (
if %ppasswort% equ %%f (
cls
echo Das Passwort ist richtig
pause >nul
goto settings
)
if not %ppasswort% equ %%f (
:fpwd
cls
echo Das Passwort ist falsch
set /a falschpasswd=%falschpasswd%+1
if %falschpasswd%==3 (
cls
echo Du hast 3 mal das falsche passwort einegegeben
pause>nul
exit
) else goto fpwd
) else exit
) else exit
Danke :D
[Edit Biber] Codeformatierung ergänzt. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 268908
Url: https://administrator.de/forum/passwort-ueberpruefung-268908.html
Ausgedruckt am: 04.04.2025 um 07:04 Uhr
4 Kommentare
Neuester Kommentar
Hi Robin,
1.
Was geht nicht, wie lautet die Fehlermeldung, was sollte passieren und was passiert statdessen, ...
Sprich mit uns oder lass uns in Ruhe !
2.
Code-Tags für dein Script wären besser gewesen, sie mal nach den Formatierungshilfen für dieses Forum
3.
Wenn ich mich nicht täusche dann müsste diese eine Zeile doch etwas anders aussehen:
z.B. so:
(habe kein Windows und kann es nicht testen)
Du willst doch schließlich die Variable mit genau diesem Namen (ppasswort) einen Wert zuweisen. Und nicht einer Variable die so heist wie der Wert aus der Variable ppasswort... oder etwa doch !?
~Arano
1.
[...] ich weiß nicht was hier falsch ist
Und wir wissen nicht wie es richtig sein sollte !?Was geht nicht, wie lautet die Fehlermeldung, was sollte passieren und was passiert statdessen, ...
Sprich mit uns oder lass uns in Ruhe !
2.
Code-Tags für dein Script wären besser gewesen, sie mal nach den Formatierungshilfen für dieses Forum
3.
Wenn ich mich nicht täusche dann müsste diese eine Zeile doch etwas anders aussehen:
set /p %ppasswort%=
set /p "ppasswort=Gebe hier bitte dein Passwort ein:"
Du willst doch schließlich die Variable mit genau diesem Namen (ppasswort) einen Wert zuweisen. Und nicht einer Variable die so heist wie der Wert aus der Variable ppasswort... oder etwa doch !?
~Arano

Stichwort Delayed Expansion beim Setzen von Variablen innerhalb von Klammern
Probiers mal damit....
Gruß jodel
Probiers mal damit....
@echo off & setlocal enabledelayedexpansion
set /a falschpasswd=0
cls
echo.
:start
set /p ppasswort=Gebe Hier dein Passwort ein:
set /p passwordinfile=<config.txt
if "%ppasswort%" == "%passwordinfile%" (
cls
echo Das Passwort ist richtig
pause >nul
goto settings
) else (
cls
echo Das Passwort ist falsch
set /a falschpasswd +=1
if !falschpasswd!==3 (
cls
echo Du hast 3 mal das falsche Passwort eingegeben
pause>nul
exit
) else (
Goto start
)
)
Moin Robin99,
willkommen im Forum.
Ergänzend zu Arano und jodel32 noch ein paar Anmerkungen.
Richtig falsch ist, wie Arano geschrieben hat, deine Zeile
Da hier der Variablenname in Prozentzeichen eingeschlossen ist, diese Variable aber noch nicht definiert wurde, wird dieser Befehl halt vom CMD-Interpreter ausgeführt als
Is' ja durchaus eine gültige Syntax, setzt aber auch keine Variable.
Führt in einer Konstellation zu einem eher peinlichen Fehlverhalten.
Wenn auch die Datei "config.txt" nicht existiert, dann wird die Zeile
.. aufgelöst zu ..
... mit dem Ergebnis, dass der Benutzer überraschenderweise die Meldung "Das Passwort ist richtig" bekommt, egal was er/sie eingibt.
Also: die Existenz der Datei "config.txt" sollte mit "if exist config.txt" abgeprüft werden.
Und das Eingabe des Passworts geändert werden auf
Ansonsten:
- die definierten goto-Sprungsziele sollten auch existieren
- statt "exit" würde ich jeweils "goto :eof" nehmen, damit es sich sinnvoll am CMD-Prompt testen lässt.
Grüße
Biber
willkommen im Forum.
Ergänzend zu Arano und jodel32 noch ein paar Anmerkungen.
Richtig falsch ist, wie Arano geschrieben hat, deine Zeile
set /p %ppasswort%=
Da hier der Variablenname in Prozentzeichen eingeschlossen ist, diese Variable aber noch nicht definiert wurde, wird dieser Befehl halt vom CMD-Interpreter ausgeführt als
set /p =
Is' ja durchaus eine gültige Syntax, setzt aber auch keine Variable.
Führt in einer Konstellation zu einem eher peinlichen Fehlverhalten.
Wenn auch die Datei "config.txt" nicht existiert, dann wird die Zeile
if "%ppasswort%" == "%passwordinfile%" (
.. aufgelöst zu ..
if "" == "" (
... mit dem Ergebnis, dass der Benutzer überraschenderweise die Meldung "Das Passwort ist richtig" bekommt, egal was er/sie eingibt.
Also: die Existenz der Datei "config.txt" sollte mit "if exist config.txt" abgeprüft werden.
Und das Eingabe des Passworts geändert werden auf
set /p ppasswort=Gib hier dein Passwort ein:
Ansonsten:
- die definierten goto-Sprungsziele sollten auch existieren
- statt "exit" würde ich jeweils "goto :eof" nehmen, damit es sich sinnvoll am CMD-Prompt testen lässt.
Grüße
Biber