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 poisenous
caracteres <|>&
se repiten sin comillas, es posible que se rompa el lote.