주어진 배치에 감사하는 다른 문자가 포함되어 있는지 findstr 테스트

주어진 배치에 감사하는 다른 문자가 포함되어 있는지 findstr 테스트

사용자 입력이 필요한 배치 스크립트가 있습니다. 그러나 나는 단지 a-z, 0-9, @#$].~+-=_/\:;. findstr을 사용하여 해당 문자 이외의 문자가 없는지 확인하는 방법이 있습니까? 문서를 확인했지만 이 작업을 수행하는 방법을 찾을 수 없습니다.

내가 가진 것:

@echo off
echo Enter Username:
set /p usr=">"

답변1

findstr 기본 정규식 모드를 사용하고 백슬래시와 함께 특별한 의미를 지닌 문자를 이스케이프 처리하는 [characterclass]를 사용하십시오.

:: Q:\Test\2018\12\07\SU_1381655.cmd
@Echo off
:loop
set /p "input=Enter data(a-z, 0-9, @#$].~+-=_/\:;.:)"

Echo:%input%|findstr /I "^[a-z0-9@#$\]\.~+\-=_\/\\:;]*$" >NUL 2>&1 && (
   echo checked input ok
) || (
   echo invalid input
)
goto :loop

내가 모든 문자를 올바르게 입력했는지 직접 확인해 보세요.
소문자만 사용하려는 경우 /i 스위치를 제거하십시오.


가능한 poisenous문자 <|>&는 따옴표 없이 에코되므로 배치가 중단될 수 있습니다.

관련 정보