Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - cпецсимвол в значении переменной for

Новый участник


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

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


Добрый день. Возникла необходимость в строке, вводимой пользователем, проверять корректность ввода (требуется десятичное число).
Использую такую конструкцию в качестве первого шага:
Код: Выделить весь код
set /p i="Ввод:   "
for /f "delims=0123456789,." %%j in ("%i%") do set tmp1="%%j"
if defined tmp1 echo incorrect input
В принципе все работает. Скрипт реагирует на некорректные символы, но ровно до тех пор, пока в i не появляется спецсимвол.
То есть, например, 456,12a распознается как неверное число, а вот 456;12 уже нет.

Вопрос: как объяснить циклу, что я хочу, чтобы в вышеуказанном примере "456;12" переменная tmp1 принимала вид ";" ?

Отправлено: 17:04, 18-09-2024

 

Аватара для NickM

Ветеран


Contributor


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

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


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

Отправлено: 18:15, 18-09-2024 | #2



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

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


Новый участник


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

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


Ознакомился с приведенной темой. Сделал вывод, что никак. Верно?

Отправлено: 19:29, 18-09-2024 | #3


Аватара для NickM

Ветеран


Contributor


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

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


Цитата Demyurg:
Сделал вывод, что никак. Верно? »
Не верно.

В теме указано решение для:
Цитата Demyurg:
проверять корректность ввода »

Отправлено: 19:56, 18-09-2024 | #4


Новый участник


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

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


Однако в последнем посте в топике, на который Вы ссылаетесь, как раз написано обратное. Что при попытке "ввести непотребство" код валится. Что я собственно и наблюдаю в своём примере со спецсимволами. Или я что-то не так понял? Разъясните, пожалуйста.

Отправлено: 20:34, 18-09-2024 | #5


Аватара для NickM

Ветеран


Contributor


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

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


Цитата Demyurg:
Что я собственно и наблюдаю в своём примере со спецсимволами. »
На каком спецсимволе у Вас:
Цитата Demyurg:
код валится »

Отправлено: 21:03, 18-09-2024 | #6


Ветеран


Contributor


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

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


Demyurg,
Цитата Demyurg:
требуется десятичное число »
Код: Выделить весь код
@Echo Off &Cls
	:Begin
		Set "i=" 
		Set /p i="Ввод:  >"
		If Not defined i (Echo Empty input & GoTo :Begin)
		Echo "%i%"|>nul Findstr /R /C:"^\"[0-9]*\"$"|| (Echo incorrect input &Set "i=" &GoTo :Begin)
		Echo %i%
	GoTo :Begin
Pause 
Exit /B

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


Последний раз редактировалось megaloman, 19-09-2024 в 20:38.

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

Отправлено: 12:45, 19-09-2024 | #7


Новый участник


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

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


megaloman, спасибо. то, что надо. добавил только [0-9.,] и для моей задачи подходит.
Однако вопрос в образовательных, так сказать, целях относительно работы со спецсимволами в for открыт. Возможно ли это в принципе? Насколько я понял из темы, на которую ссылался NickM, нет. Верно?

NickM, Некорректно выразился. Не в том смысле код валится, что закрывается скрипт по исключению, нет. А в том смысле, что продолжается его исполнение с неверными результатами. Вводные данные, которые не должны проходить проверку, ее проходят и попадают в дальнейшую обработку с закономерно неверными итогами.

Отправлено: 17:08, Вчера | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Перенос значении в xml с помощью php daradan Программирование и базы данных 3 03-12-2019 15:35
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. NiOl Скриптовые языки администрирования Windows 7 31-01-2019 19:58
CMD/BAT - Получение значении из XML и сохранение в txt sector2484 Скриптовые языки администрирования Windows 16 01-10-2018 12:42
CMD/BAT - [решено] Сравнение переменной цикла со строковой переменной NickM Скриптовые языки администрирования Windows 2 17-01-2017 10:28
CMD/BAT - [решено] В переменной содержится имя переменной opravdin Скриптовые языки администрирования Windows 3 28-01-2013 11:11




 
Переход