![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка количества вводимых символов в переменную |
|
CMD/BAT - [решено] Проверка количества вводимых символов в переменную
|
Пользователь Сообщения: 66 |
Как реализовать проверку на введённые символы?
нужна проверка количества вводимых символов в переменную, символы могут быть как цифровые/текстовые/комбинированные но их количество должно быть не менее 8 и не более 63 ввод в переменную SET /p KEY= (цифры и/или буквы в количестве от 8 до 63 символов) если условие не выполняется вернуться к началу если условие выполняется перейти на следующую метку моих знаний здесь явно недостаточно, нужна помощь Гуру. |
|
Отправлено: 05:58, 15-02-2023 |
Ветеран Сообщения: 2735
|
Профиль | Отправить 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата sushnyak:
Цитата sushnyak:
![]() |
||
------- Отправлено: 09:33, 15-02-2023 | #3 |
Пользователь Сообщения: 66
|
Профиль | Отправить PM | Цитировать
в этой строке заменил выделенное на
Лишь в этом случае сценарий продолжает работать,
если поле ввода оставить пустым и нажать Enter (без ввода данных) Можно ли скрыть лишнюю информацию из выводимой строки приглашения ? Цитата:
|
|
Отправлено: 10:08, 15-02-2023 | #4 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата sushnyak:
Цитата sushnyak:
![]() Надо понимать, что попытка ввода некоторых недопустимых символов попросту будет заваливать весь код, т.е. будет вызвано исключение и прерывание работы сценария. Полностью исключить такую ситуацию в CMD затруднительно. |
|||
------- Отправлено: 10:20, 15-02-2023 | #5 |
Пользователь Сообщения: 66
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
![]() по невнимательности вводил буквы кириллицей. так что пардоньте ![]() |
|
Отправлено: 10:26, 15-02-2023 | #6 |
Пользователь Сообщения: 66
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
то подразумевается ввод текстово-цифровой (46h0j35b3v86) для примера. |
|
Отправлено: 10:55, 15-02-2023 | #7 |
Ветеран Сообщения: 2735
|
Профиль | Отправить 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 |
Пользователь Сообщения: 66
|
Профиль | Отправить PM | Цитировать megaloman,
Премного благодарен за помощь, последний код - самое, что надо ![]() |
Отправлено: 14:58, 15-02-2023 | #9 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата sushnyak:
![]() Элементарная логика... если Вам требуется проверка на правильность ввода, то это явно не лично для Вас (а иначе не вижу смысла в такой проверке). Далее, если символы будет вводить кто-то ещё, то ему рано или поздно придет в голову мысль, что надо попробовать набрать какое-нибудь непотребство (если есть уверенность, что не придет, то всегда на готове встречный вопрос: а зачем тогда проверка?). В общем, код будет завален, сценарий прерван, со всеми вытекающими... а вот далее, всё зависит от критичности исполнения кода и естественно, решение о приемлемости неустойчивого кода... за Вами. |
|
------- Отправлено: 17:06, 15-02-2023 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Преодоление ограничения количества символов в опции 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 |
|