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

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

Ответить
Настройки темы
CMD/BAT - 2 числовых параметра, первый вводит пользователь, второй задается в скрипте

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


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

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


Не смог понять суть задания (заранее спасибо)
Написать файл, в котором задается 2 числовых параметра, первый параметр вводится пользователем с клавиатуры, второй задается в скрипте, и проверяется их существование. Если первая переменная существует, она выводится на экран, иначе выводится сообщение об ошибке. Если вторая переменная существует, она прибавляется к первой и выводится на экран, иначе выводится сообщение об ошибке.

Отправлено: 00:58, 18-01-2019

 

Ветеран


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

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


Неудивительно, что Вы не поняли. Поскольку под «параметром» обычно подразумевают совсем другое.

Попробуйте так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set /a iFirstVar = 12345
set iSecondVar=

set /p "iSecondVar=Enter digital value: "

if defined iFirstVar (
	echo Environment variable [iFirstVar] = [%iFirstVar%].
	
	if defined iSecondVar (
		echo Environment variable [iSecondVar] = [%iSecondVar%].
		
		set /a iSumm = %iFirstVar% + %iSecondVar%
		echo Summ of environment variables [iFirstVar] and [iSecondVar] = [!iSumm!].
	) else (
		echo Environment variable [iSecondVar] not defined.
		exit /b 2
	)
) else (
	echo Environment variable [iFirstVar] not defined.
	exit /b 1
)

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

Отправлено: 07:11, 18-01-2019 | #2



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

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


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


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

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


хороший вариант, единственное столкнулся с проблемой, по задаче должно быть именно число, а в этом варианте проходят и буквы, пробовал вот такой вариант для проверки символов, но проходит только для вводимого числа не могу связать со вторым числом, сумму считает, но при не верных данных, не останавливается на ошибке вводимого числа, а на втором числе высчитывает 0
Скрытый текст
@echo off
:st
set /p "v=Введите число: "
for /f "delims=" %%A in ('echo.%v%^| findstr "[^0-9]"') do set "nv=%%~A"
if not "%v%"=="%nv%" (echo.Это число %v%) else (goto st)
pause>nul

Отправлено: 00:13, 19-01-2019 | #3


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


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

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


самое приличное, что смог составить, проблема в том, что работает только в идеальных условиях, когда все значения числа, при вводе буквы, всё равно показывает значение суммы
Скрытый текст
@echo off
set /a "n=2"
set /p "v=vvedide chisl: "
set /a "summ=%v%+%n%"
for /f "delims=" %%A in ('echo.%v%^| findstr "[^0-9]"') do set "nv=%%~A"
for /f "delims=" %%A in ('echo.%n%^| findstr "[^0-9]"') do set "nt=%%~A"
if not "%v%"=="%nv%" (echo.chislo1 %v%) else (echo.bag | pause>exit)
if "%n%"=="%nt%" (echo. summa %summ%) else (echo.bag)
pause
exit

Отправлено: 01:44, 19-01-2019 | #4


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата crouly0:
for /f "delims=" %%A in ('echo.%v%^| findstr "[^0-9]"') do set "nv=%%~A" »
если требуется проверка на ввод числа, то делается это немного по-другому:
Код: Выделить весь код
@echo off
set /a a=2

:begin
cls
set /p "b=Введите число: "
if "%b%"=="&" (echo Это не число&pause&goto begin)
if "%b%"=="" (echo Это не число&pause&goto begin)
if "%b%"=="<" (echo Это не число&pause&goto begin)
if "%b%"==">" (echo Это не число&pause&goto begin)
echo.%b%|>nul findstr /rc:"[^0-9]"&&(echo это не число&pause&goto begin)
set /a sum=a+b
echo sum=%sum%
pause&exit /b

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


Отправлено: 10:08, 19-01-2019 | #5


Ветеран


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

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


Хоть это и глупо — проверять значение, заданное непосредственно в самом пакетном файле (я лично не вижу в этом ни малейшего смысла — в отличие от проверки интерактивно вводимых данных), но — пожалуйста:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

>nul 2>&1 set /a iFirstVar = 12345 || (
	echo Need only digital value content for [iFirstVar] environment variable.
	exit /b 1
)

set iSecondVar=
set /p "iSecondVar=Enter digital value: "

if defined iFirstVar (
	echo Environment variable [iFirstVar] = [%iFirstVar%].

	if defined iSecondVar (
		echo Environment variable [iSecondVar] = [%iSecondVar%].
			
		echo %iSecondVar%| >nul 2>&1 findstr.exe /r /c:"^[0-9]*$" && (
			set /a iSumm = %iFirstVar% + %iSecondVar%
			echo Summ of environment variables [iFirstVar] and [iSecondVar] = [!iSumm!].
		) || (
			echo Need only digital value content for [iSecondVar] environment variable.
			exit /b 4
		)
	) else (
		echo Environment variable [iSecondVar] not defined.
		exit /b 3
	)
) else (
	echo Environment variable [iFirstVar] not defined.
	exit /b 2
)

endlocal
exit /b 0

Можете попробовать задать для переменной окружения iFirstVar вместо «12345» нечисловое значение, можете попробовать ввести для переменной окружения iSecondVar нечисловое значение и посмотреть, что будет.

Отправлено: 10:58, 19-01-2019 | #6


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


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

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


Изображения
Тип файла: png Безымянный.png
(20.3 Kb, 3 просмотров)

при вводи первого значения, числовым, второе значение из программы (буква), присваивает значение вводимой переменной 0, и считает сумму, хотя должна быть ошибка, также при буквенном значении вводимой переменной, по условию, второе значение отображаться не должно, но ошибку выдает верно

Отправлено: 11:42, 19-01-2019 | #7


Ветеран


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

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


Что есть «первое значение», что есть «второе значение из программы (буква)»? Вы не могли бы выражаться в общепринятых терминах — «переменная окружения», «пакетный файл», «iFirstVar», «iSecondVar»?!

Вот примеры исполнения пакетного файла с кодом из предыдущего сообщения, со вводом числового значения для переменной окружения iSecondVar и со вводом не числового значения для переменной окружения iSecondVar:
Скрытый текст


Вот пример исполнения пакетного файла с кодом из предыдущего сообщения, в котором добавлена одна буква «a» — таким образом делается тупая попытка присвоения переменной окружения iFirstVar не числового значения непосредственно в коде пакетного файла (что, естественно, сразу вызывает ошибку, которую мы отслеживаем и выводим соответствующее сообщение):
Скрытый текст

Отправлено: 12:05, 19-01-2019 | #8


Ветеран


Contributor


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

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


crouly0, Мой вариант, частично списанный у Iska. Контроль корректности вводимых данных имеется.
Код: Выделить весь код
@Echo Off
cls

2>nul Set /A iSecondVar=12345

:Begin
	Set "in="
	set /p "in=Enter digital value: "
	cls
	If Not defined in (
		Echo First number not defined
		Pause
		Exit /B 1
	)	
	
	Set /A iFirstVar=in 2>nul
	If Not "%in%"=="%iFirstVar%" (
		Echo First number invalid entered "%in%"
		GoTo :Begin
	)
Echo First  number= %iFirstVar%

If Not defined iSecondVar (
	Echo Second number not defined	
	Pause
	Exit /B 2
)
Echo Second number= %iSecondVar%
Echo.

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

Pause

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


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

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

Отправлено: 12:59, 19-01-2019 | #9


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


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

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


Изображения
Тип файла: png 111111.png
(32.1 Kb, 6 просмотров)
Тип файла: png Безымянный.png
(23.1 Kb, 3 просмотров)

я говорю о проверки iFirstVar

Отправлено: 13:01, 19-01-2019 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Загрузка - Не появился второй пользователь gorill Microsoft Windows 10 12 02-03-2018 22:12
Прочее - Пинг первый проход 5мск второй 1мск Sergey_7 Сетевые технологии 4 13-09-2017 16:25
2007 - Автоматический скрипт копирования числовых данных без формулы DmitriyZzZ Microsoft Office (Word, Excel, Outlook и т.д.) 2 25-12-2015 17:55
Разное - Не задается печать windows 7 принтер HP b109a Combattsar Microsoft Windows 7 13 02-02-2013 19:06
HDD - Установлены 2 жестких диска. Первый SATA, второй IDE tyrin Накопители (SSD, HDD, USB Flash) 7 21-11-2009 19:23




 
Переход