2009-05-24 3 views
2

Мне нравится иметь пакетный файл, который проверяет, является ли введенный текст в TXT-файле одинаковым.Пакетный файл, который проверяет введенный текст с текстом из TXT-файла

Что-то вроде этого:

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

.txt-файл pass.txt, и это должно выглядеть примерно так:

p2342ddd3

Так что я хочу что пользователь должен ввести текст из файла pass.txt (не глядя на него явно) и что пакетный файл проверяет, похож ли он на текст из файла pass.txt.

+0

Дубликат http://stackoverflow.com/questions/206114/dos-batch-files-how-to-read-a-file – RedFilter

+0

Это не дубликат, потому что здесь я пытаюсь проверить, является ли это ИМЯ –

ответ

2

Это потребует сочетания для цикла и просто, если:

@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

Вы можете использовать встроенную команду FINDSTR, чтобы соответствовать пароль в файле паролей:

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

Опции/B и/E предназначены для обеспечения соответствия всего пароля и не происходит частичного согласования. Например. 42 - , содержащийся в p2342ddd3, но не должен приводить к совпадению.

Опции/M и перенаправление на nul должно гарантировать, что пароль не просачивается.

FINDSTR устанавливает переменную ERRORLEVEL в 0, если элемент найден (совпадение с паролем) и значение больше 0, если элемент не найден.