Batch Passwortabfrage

2 Antworten

Ja, das geht. Du fragt per SET/P-Befehl die Passworteingabe ab und überschreibst mit einem zweiten Prozess die eingegebenen Buchstaben mit Sternchen:

@echo off

if "%~1" == "Stern" goto :Sternchen

start /b cmd /c %0 Stern

set /p PW=Passwort:

type nul>InputDone.tmp 2>nul

echo.

echo %PW%

pause

exit /b

:Sternchen

if not exist InputDone.tmp set /p ".={BS}*" <nul

if exist InputDone.tmp (

del InputDone.tmp >nul 2>nul

exit /b

)

goto Sternchen

GuteFrage kann das {BS} nicht richtig darstellen. Du musst es mit ASCII-Code 08 (Alt gedrückt halten, auf dem Ziffernblock 08 eingeben, dann Alt loslassen) ersetzen.

Zuerst prüft die Datei, ob sie sich selbst mit dem Parameter "Stern" gestartet hat. Falls ja, wird der Nebenprozess :Sternchen eingeleitet, welcher das vorige Zeichen immer mit einem Stern ersetzt. Falls nicht, startet sie sich ein zweites Mal.

Anschließend fragt der Hauptprozess das Passwort ab.

Sobald der Benutzer Enter drückt, erstellt der Hauptprozess eine leere TMP-Datei. Der Nebenprozess erkennt diese, löscht sie wieder und beendet sich selbst.

Zur Prüfung habe ich im Hauptprozess das Passwort per ECHO-Befehl nochmal schreiben lassen. Das kannst du natürlich mit IF-Befehlen oder was du sonst möchtest ersetzen.

Ich rate davon ab, in :Sternchen eine PING-Pause zu machen, da der Benutzer ggf. schneller schreibt als der Nebenprozess durch Sternchen ersetzen kann.

Die Datei wurde erfolgreich getestet unter Windows XP Prof. SP 3.


playSTABLE2 
Beitragsersteller
 12.04.2015, 02:06

Vielen Dank. Hilft mir sehr weiter :)

0

Sowas geht besser mit VBScript. Ist sicherer und schwerer zu umgehen.