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

Показать сообщение отдельно

Ветеран


Contributor


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

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


crouly0,
Цитата crouly0:
значение из программы iSecondVar, если в программе задать значение например (m), то программа выдает что значение iSecondVar, а по условию должна быть ошибка »
ИМХО, это чересчур.
Понимаю, можно ошибиться при вводе с клавиатуры, но руками в тексте скрипта - это злонамеренное вредительство. Но, хозяин - барин.
Вот вариант с одинаковым контролем обоих чисел
Код: Выделить весь код
@Echo Off
cls

Set "In2=12345"

:Begin
	Set "In1="
	Set /P "In1=Enter iFirstVar digital value: "
	Call :Control "First " "iFirstVar" "%In1%"
	If %ErrorLevel%==1 GoTo :Begin
	If %ErrorLevel%==2 Exit /B 2

Call :Control "Second" "iSecondVar" "%In2%" ||(Pause &Exit /B %ErrorLevel%)

Echo.
Set /A Summ=%iFirstVar%+%iSecondVar%
echo Summ=iFirstVar+iSecondVar=%iFirstVar%+%iSecondVar%=%Summ%
Echo.

Pause
Exit /B 0

:Control
SetLocal
	Set "In=%~3"
	If Not defined In (
		Echo %~1 number not defined. Script cancelling.
		EndLocal  &Set "%~2="
		Exit /B 2
	)
	2>nul Set /A Inn=%In%   
	If Not "%In%"=="%Inn%" (
		Echo %~1 number invalid entered %3.
		EndLocal  &Set "%~2="
		Exit /B 1
	)
	Echo %~1 number= %~3
	EndLocal &Set /A %~2=%~3
Exit /B 0
YuS_2, Не берусь в CMD организовать контроль на всевозможные спецсимволы. ИМХО, надо принять некоторые риски. ©Всегда можно подобрать данные, способные одурачить программу.

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


Последний раз редактировалось megaloman, 19-01-2019 в 14:54.

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

Отправлено: 14:35, 19-01-2019 | #15