2009-05-24 7 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

이 for 루프의 조합을 필요로하고 간단한 경우 :

@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보다 큰 값으로 설정합니다.