prueba findtr si contiene otros caracteres, gracias al lote dado

prueba findtr si contiene otros caracteres, gracias al lote dado

Tengo un script por lotes donde se necesita la entrada del usuario. Sin embargo, sólo quiero permitir a-z, 0-9, @#$].~+-=_/\:;. ¿Hay alguna manera de usar findtr para asegurarse de que no haya otros caracteres además de esos? Revisé la documentación y no encuentro una manera de hacerlo.

Lo que tengo:

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

Respuesta1

Utilice el modo de expresión regular predeterminado de findtr y utilice caracteres de escape [characterclass] con un significado especial con una 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

Compruebe usted mismo si entendí todos los caracteres correctamente.
Si solo se utilizaron letras minúsculas, elimine el modificador /i.


Como los posibles poisenouscaracteres <|>&se repiten sin comillas, es posible que se rompa el lote.

información relacionada