CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Ответить
Аватара пользователя
sushnyak

CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение sushnyak »

Как реализовать проверку на введённые символы?

нужна проверка количества вводимых символов в переменную,

символы могут быть как цифровые/текстовые/комбинированные

но их количество должно быть не менее 8 и не более 63





ввод в переменную SET /p KEY= (цифры и/или буквы в количестве от 8 до 63 символов)

если условие не выполняется вернуться к началу

если условие выполняется перейти на следующую метку



моих знаний здесь явно недостаточно, нужна помощь Гуру.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение megaloman »

Код: Выделить всё

@Echo Off
cls
	Set /A Min=8, Max=63
	Set "R=0-9A-Za-z"
	:Begin
		Echo.
		Set "KEY="
		(Set /P KEY=Input KEY %Min%^<=n^<=%Max% "%R%" or empty string for Exit ^> )
		If "%KEY%"=="" (Echo Empty string. Canceled. &Exit /B 0)
		Call :Check "%KEY%" %Min% %Max% "%R%"
	If %ErrorLevel% NEQ 0 (Echo !!! Wrong KEY="%KEY%" &GoTo :Begin)
	Echo. &Echo we continue to sculpt our ingenious script :) !!!
Pause
Exit /B
:Check
	If "%~1"=="" Exit /B 1
	Set /A MM=%2-1
	Set "In=%~1"
	Call Set "In1=%%In:~%MM%,1%%"
	Call Set "In2=%%In:~%3,1%%"
	If Not "%In1%"=="" If "%In2%"=="" Echo %~1|>nul 2>nul FindStr /R /C:"^[%~4]*$" &&Exit /B 0
Exit /B 1
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение megaloman »

Цитата sushnyak:



1 завершает работу при нажатии Enter (без ввода данных)
»




так задумано. Я считаю, что должен быть простой способ выйти из цикла при вводе данных
Цитата sushnyak:



2 не проходит проверку если вводимые данные комбинированы (буквы и цифры)
»




Это инсинуации Изображение . Докажите. Свой скриншот я приложил
Вложения

[Расширение png было запрещено, вложение больше недоступно.]

Аватара пользователя
sushnyak

Re: CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение sushnyak »

Код:

Код: Выделить всё

If "%KEY%"=="" (Echo Empty string. Canceled. &Exit /B 0)

в этой строке заменил выделенное на

Код:

Код: Выделить всё

GoTo :Begin

Лишь в этом случае сценарий продолжает работать,

если поле ввода оставить пустым и нажать Enter (без ввода данных)

Можно ли скрыть лишнюю информацию из выводимой строки приглашения ?

Цитата:

Input KEY 8
Аватара пользователя
YuS_2

Re: CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение YuS_2 »

Цитата sushnyak:



проверка количества вводимых символов в переменную
CMD/BAT - [решено] Проверка количества вводимых символов в переменную





Цитата sushnyak:



символы могут быть как цифровые/текстовые/комбинированные
CMD/BAT - [решено] Проверка количества вводимых символов в переменную




Будьте осторожны в своих желаниях Изображение

Надо понимать, что попытка ввода некоторых недопустимых символов попросту будет заваливать весь код, т.е. будет вызвано исключение и прерывание работы сценария. Полностью исключить такую ситуацию в CMD затруднительно.
Аватара пользователя
sushnyak

Re: CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение sushnyak »

Цитата megaloman:



Это инсинуации . Докажите. Свой скриншот я приложил
CMD/BAT - [решено] Проверка количества вводимых символов в переменную




Они самые Изображение

по невнимательности вводил буквы кириллицей.

так что пардоньте Изображение
Аватара пользователя
sushnyak

Re: CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение sushnyak »

Цитата YuS_2:



попытка ввода некоторых недопустимых символов
CMD/BAT - [решено] Проверка количества вводимых символов в переменную




о спец символах не было речи, если смутило слово комбинированные,

то подразумевается ввод текстово-цифровой (46h0j35b3v86) для примера.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение megaloman »

sushnyak,


По мотивам Ваших хотелок с косметическими изменениями

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@Echo Off
cls
	Set /A Min=8, Max=63
	Set "R=0-9A-Za-z"
	:Begin
		Echo. &Set "KEY="
		(Set /P KEY=Input KEY ^> )
	Call :Check "%KEY%" %Min% %Max% "%R%" ||(Echo !!! Wrong KEY="%KEY%" &GoTo :Begin)
	Echo. &Echo KEY="%KEY%" We continue to sculpt our ingenious script :) !!!
Pause
Exit /B
:Check
	Echo %~1|>nul 2>nul FindStr /R /C:"^[%~4]*$" ||Exit /B 1
	Set /A MM=%2-1
	Set "In=%~1"
	Call Set "In1=%%In:~%MM%,1%%"
	Call Set "In2=%%In:~%3,1%%"
	If Not "%In1%"=="" If "%In2%"=="" Exit /B 0
Exit /B 1
Аватара пользователя
sushnyak

Re: CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение sushnyak »

megaloman,



Премного благодарен за помощь,

последний код - самое, что надо Изображение
Аватара пользователя
YuS_2

Re: CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Сообщение YuS_2 »

Цитата sushnyak:



о спец символах не было речи, если смутило слово комбинированные
CMD/BAT - [решено] Проверка количества вводимых символов в переменную




Да мне-то чего смущаться? Изображение

Элементарная логика... если Вам требуется проверка на правильность ввода, то это явно не лично для Вас (а иначе не вижу смысла в такой проверке). Далее, если символы будет вводить кто-то ещё, то ему рано или поздно придет в голову мысль, что надо попробовать набрать какое-нибудь непотребство (если есть уверенность, что не придет, то всегда на готове встречный вопрос: а зачем тогда проверка?). В общем, код будет завален, сценарий прерван, со всеми вытекающими... а вот далее, всё зависит от критичности исполнения кода и естественно, решение о приемлемости неустойчивого кода... за Вами.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»