teste findstr se contém outros caracteres, obrigado pelo lote

teste findstr se contém outros caracteres, obrigado pelo lote

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 poisenouscaracteres <|>&são repetidos sem aspas, eles podem quebrar o lote.

informação relacionada