Показать полную графическую версию : cпецсимвол в значении переменной for
Добрый день. Возникла необходимость в строке, вводимой пользователем, проверять корректность ввода (требуется десятичное число).
Использую такую конструкцию в качестве первого шага:
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 принимала вид ";" ?
CMD/BAT - [решено] Проверка количества вводимых символов в переменную (http://forum.oszone.net/post-3003260.html)
Ознакомился с приведенной темой. Сделал вывод, что никак. Верно?
Сделал вывод, что никак. Верно? »
Не верно.
В теме указано решение для:
проверять корректность ввода »
Однако в последнем посте в топике, на который Вы ссылаетесь, как раз написано обратное. Что при попытке "ввести непотребство" код валится. Что я собственно и наблюдаю в своём примере со спецсимволами. Или я что-то не так понял? Разъясните, пожалуйста.
Что я собственно и наблюдаю в своём примере со спецсимволами. »
На каком спецсимволе у Вас:
код валится »
megaloman
19-09-2024, 12:45
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, спасибо. то, что надо. добавил только [0-9.,] и для моей задачи подходит.
Однако вопрос в образовательных, так сказать, целях относительно работы со спецсимволами в for открыт. Возможно ли это в принципе? Насколько я понял из темы, на которую ссылался NickM, нет. Верно?
NickM, Некорректно выразился. Не в том смысле код валится, что закрывается скрипт по исключению, нет. А в том смысле, что продолжается его исполнение с неверными результатами. Вводные данные, которые не должны проходить проверку, ее проходят и попадают в дальнейшую обработку с закономерно неверными итогами.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.