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символы <|>&выводятся без кавычек, они могут нарушить пакет.

Связанный контент