2009-05-24 10 views
2

J'aime avoir un fichier batch qui vérifie si un texte entré dans un fichier .txt est le même.Fichier batch qui vérifie un texte saisi avec le texte d'un fichier .txt

Quelque chose comme ceci:

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

Le fichier txt est pass.txt, et il devrait ressembler à ceci:

p2342ddd3

donc ce que je veux à faire, qu'un utilisateur doive taper le texte du fichier pass.txt (sans le regarder évidemment) et que le fichier de commandes vérifie s'il est similaire au texte du fichier pass.txt.

+0

Dupliquer de http://stackoverflow.com/questions/206114/dos-batch-files-how-to-read-a-file – RedFilter

+0

ce n'est pas un doublon car ici j'essaie de vérifier s'il est le même –

Répondre

2

Cela nécessitera une combinaison d'une boucle et simple si:

@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

Vous pouvez utiliser la commande intégrée FINDSTR pour correspondre au mot de passe dans le fichier de mot de passe:

@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! 

Les options/B et/E permettent de s'assurer que le mot de passe complet correspond et qu'aucune correspondance partielle n'a lieu. Par exemple. 42 est contenu dans p2342ddd3, mais ne devrait pas aboutir à une correspondance.

Options/M et la redirection vers nul est de s'assurer que le mot de passe ne fuit pas.

FINDSTR fixe ERRORLEVEL variable 0 si un élément se trouve (correspondance de mot de passe) et à une valeur supérieure à 0 si un article est pas été trouvé.