Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка количества вводимых символов в переменную

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

Аватара для sushnyak

Пользователь


Сообщения: 66
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: sushnyak
Дата: 15-02-2023
Как реализовать проверку на введённые символы?
нужна проверка количества вводимых символов в переменную,
символы могут быть как цифровые/текстовые/комбинированные
но их количество должно быть не менее 8 и не более 63


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

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

Отправлено: 05:58, 15-02-2023

 

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:50, 15-02-2023 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png я230215.png
(5.8 Kb, 20 просмотров)

Цитата sushnyak:
1 завершает работу при нажатии Enter (без ввода данных) »
так задумано. Я считаю, что должен быть простой способ выйти из цикла при вводе данных
Цитата sushnyak:
2 не проходит проверку если вводимые данные комбинированы (буквы и цифры) »
Это инсинуации . Докажите. Свой скриншот я приложил

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 09:33, 15-02-2023 | #3


Аватара для sushnyak

Пользователь


Сообщения: 66
Благодарности: 1

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
If "%KEY%"=="" (Echo Empty string. Canceled. &Exit /B 0)
в этой строке заменил выделенное на
Код: Выделить весь код
GoTo :Begin
Лишь в этом случае сценарий продолжает работать,
если поле ввода оставить пустым и нажать Enter (без ввода данных)

Можно ли скрыть лишнюю информацию из выводимой строки приглашения ?
Цитата:
Input KEY 8<=n<=63 "0-9A-Za-z" or empty string for Exit >
лишнее выделил

Отправлено: 10:08, 15-02-2023 | #4


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата sushnyak:
проверка количества вводимых символов в переменную »
Цитата sushnyak:
символы могут быть как цифровые/текстовые/комбинированные »
Будьте осторожны в своих желаниях
Надо понимать, что попытка ввода некоторых недопустимых символов попросту будет заваливать весь код, т.е. будет вызвано исключение и прерывание работы сценария. Полностью исключить такую ситуацию в CMD затруднительно.

-------
scio me nihil scire. Ѫ


Отправлено: 10:20, 15-02-2023 | #5


Аватара для sushnyak

Пользователь


Сообщения: 66
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Это инсинуации . Докажите. Свой скриншот я приложил »
Они самые
по невнимательности вводил буквы кириллицей.
так что пардоньте

Отправлено: 10:26, 15-02-2023 | #6


Аватара для sushnyak

Пользователь


Сообщения: 66
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
попытка ввода некоторых недопустимых символов »
о спец символах не было речи, если смутило слово комбинированные,
то подразумевается ввод текстово-цифровой (46h0j35b3v86) для примера.

Отправлено: 10:55, 15-02-2023 | #7


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


sushnyak,
По мотивам Ваших хотелок с косметическими изменениями
Код: Выделить весь код
@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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-02-2023 в 13:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:41, 15-02-2023 | #8


Аватара для sushnyak

Пользователь


Сообщения: 66
Благодарности: 1

Профиль | Отправить PM | Цитировать


megaloman,

Премного благодарен за помощь,
последний код - самое, что надо

Отправлено: 14:58, 15-02-2023 | #9


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


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

-------
scio me nihil scire. Ѫ


Отправлено: 17:06, 15-02-2023 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка количества вводимых символов в переменную

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Преодоление ограничения количества символов в опции tr утилиты schtasks NordeN96 Microsoft Windows 10 0 07-03-2022 11:06
CMD/BAT - Подсчет количества одинаковых символов в txt файле ia_del@vk Скриптовые языки администрирования Windows 7 16-10-2017 22:23
Система - [решено] проверка целостности большого количества файлов daneeall Программное обеспечение Windows 7 08-02-2013 16:25
Проверка символов (PHP) aggressor_ Вебмастеру 13 15-06-2012 17:46
Как изменить ограничение количества компьютеров, вводимых в домен? babki Microsoft Windows NT/2000/2003 2 10-11-2006 08:08




 
Переход