2009-05-24 4 views
2

Ich habe gerne eine Batch-Datei, die überprüft, ob ein eingegebener Text in einer TXT-Datei identisch ist.Batch-Datei, die einen eingegebenen Text mit Text aus einer TXT-Datei überprüft

Etwas wie folgt aus:

@echo off 
Set pass= 
set /p pass=Enter your password: 
...... 
...... 

Die TXT-Datei ist pass.txt, und es sollte wie folgt aussehen:

p2342ddd3

Also, was ich will zu tun, dass ein Benutzer den Text aus der pass.txt-Datei eingeben muss (ohne es offensichtlich zu betrachten) und dass die Batchdatei prüft, ob sie mit dem Text aus der pass.txt-Datei übereinstimmt.

+0

Duplikat von http://StackOverflow.com/Questions/206114/dos-batch-files-how-to-read-a-file – RedFilter

+0

es ist kein Duplikat, weil ich hier versuche zu überprüfen, ob es das gleiche ist –

Antwort

2

Dies wird eine Kombination aus einem for-Schleife und einfach verlangen, wenn:

@echo off 
:begin 
set pass= 
set /p pass=Enter your password: 
if {%pass%}=={} goto :begin 
set authenticated= 
for /f "tokens=*" %%a in (pass.txt) do (
    if {%%a}=={%pass%} set authenticated=true 
) 

if not defined authenticated (echo Invalid password & goto :begin) 
exit /b 0 
0

Sie können die FINDSTR integrierten Befehl verwenden, um das Kennwort in der Kennwortdatei anzupassen:

@echo off 
set pass= 
set /p pass=Enter your password: 

findstr /B /E /M %pass% pass.txt > nul 
If %ERRORLEVEL% EQU 0 echo Password matched! 

Mit den Optionen/B und/E wird sichergestellt, dass das gesamte Passwort übereinstimmt und keine Teilübereinstimmung stattfindet. Z.B. 42 ist in p2342ddd3 enthalten, sollte aber nicht zu einer Übereinstimmung führen.

Optionen/M und die Umleitung zu Null soll sicherstellen, dass das Passwort nicht ausläuft.

FINDSTR setzt die Variable ERRORLEVEL auf 0, wenn ein Element gefunden wurde (Passwortabfrage) und auf einen Wert größer als 0, wenn ein Element nicht gefunden wurde.

Verwandte Themen