|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - 2 числовых параметра, первый вводит пользователь, второй задается в скрипте |
|
CMD/BAT - 2 числовых параметра, первый вводит пользователь, второй задается в скрипте
|
Новый участник Сообщения: 8 |
Не смог понять суть задания (заранее спасибо)
Написать файл, в котором задается 2 числовых параметра, первый параметр вводится пользователем с клавиатуры, второй задается в скрипте, и проверяется их существование. Если первая переменная существует, она выводится на экран, иначе выводится сообщение об ошибке. Если вторая переменная существует, она прибавляется к первой и выводится на экран, иначе выводится сообщение об ошибке. |
|
Отправлено: 00:58, 18-01-2019 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать megaloman, та же проблема, с которой столкнулся я, не проверяется значение из программы iSecondVar, если в программе задать значение например (m), то программа выдает что значение iSecondVar, а по условию должна быть ошибка, и не должна выдавать сумму
|
Отправлено: 13:09, 19-01-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать megaloman, iSecondVar не проходит проверку, если внутри программы, дать значение например (m), то в результате получается значение 0, по условию должна быть ошибка, без подсчета суммы, вообщем у меня такая же проблема
|
Отправлено: 13:13, 19-01-2019 | #12 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать 1. проверка вводимого числа
если это не число, то ошибка, программа остановилась 2. Если введено число, выводим его на экран 3. проверяем число заданное в программе если это не число, ошибка, программа останавливается 4. если число заданное в программе число, выводим его на экран выводим сумму. а получается, если в программе не число, то выполняется в любом случае 4 пункт, но со значение 0 |
Отправлено: 13:18, 19-01-2019 | #13 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Выдалось время и было интересно запустить краш-тест
![]() Цитата Iska:
Цитата megaloman:
В свою очередь, чтобы не быть пустым критиканом, даю свою версию на краш-тест: @echo off set /a a=2 :begin set "b= " cls set /p "b=Введите число: " set "b=%b:"=%" if "%b%"=="" (echo это не число&pause&goto begin) echo."%b%"|>nul findstr /rc:"[&|^%%]"&&(echo это не число&pause&goto begin) if "%b:~,2%"=="0x" ( echo.%b:~2%|>nul findstr /irc:"[^0-9a-f]"&&(echo это не число&pause&goto begin) ) else ( echo.%b%|>nul findstr /rc:"[^0-9]"&&(echo это не число&pause&goto begin) ) set /a c=b if %c% equ 0 if not %c% equ %b% (echo некорректное число&pause&goto begin) echo sum=%a%+%c% set /a sum=a+c echo sum=%sum% pause&exit /b |
||
------- Последний раз редактировалось YuS_2, 19-01-2019 в 17:07. Причина: Добавил обработку шестнадцатеричных чисел Отправлено: 13:28, 19-01-2019 | #14 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать crouly0,
Цитата crouly0:
Понимаю, можно ошибиться при вводе с клавиатуры, но руками в тексте скрипта - это злонамеренное вредительство. Но, хозяин - барин.
Вот вариант с одинаковым контролем обоих чисел @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 |
|
------- Последний раз редактировалось megaloman, 19-01-2019 в 14:54. Отправлено: 14:35, 19-01-2019 | #15 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
![]() Но свести к минимуму всевозможные коллизии синтаксиса, всё же, можно... |
|
------- Отправлено: 15:31, 19-01-2019 | #16 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать YuS_2,
Цитата:
|
|
------- Отправлено: 15:44, 19-01-2019 | #17 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата YuS_2:
=== В вышеприведенный код добавлена возможность обработки шестнадцатиричных чисел |
||
------- Последний раз редактировалось YuS_2, 19-01-2019 в 17:02. Отправлено: 16:24, 19-01-2019 | #18 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Загрузка - Не появился второй пользователь | 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 |
|