Eu tenho um script em lote onde a entrada do usuário é necessária. No entanto, eu só quero permitir a-z, 0-9, @#$].~+-=_/\:;
. Existe uma maneira de usar findstr para garantir que não haja outros caracteres além desses? Verifiquei a documentação e não consigo descobrir uma maneira de fazer isso.
O que eu tenho:
@echo off
echo Enter Username:
set /p usr=">"
Responder1
Use o modo regex padrão findstr e use um [characterclass] caracteres de escape com um significado especial com uma barra invertida.
:: 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
Verifique você mesmo se acertei todos os caracteres.
Se apenas letras minúsculas fossem pretendidas, remova a opção /i.
Como possíveis poisenous
caracteres <|>&
são repetidos sem aspas, eles podem quebrar o lote.