Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
1 / 1 / 2
Регистрация: 08.03.2017
Сообщений: 67

Функция SET

04.04.2017, 10:04. Показов 2435. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,

Есть следующий код

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
echo 1 - Netherlands
echo 2 - Belgium-Dutch
echo 3 - Czech Republic
echo 4 - Slovak
echo 5 - Slovenia
echo 6 - Poland
echo 7 - Swedish
echo 8 - Germany
echo 9 - Austria
echo 10 - Switzerland-German
echo 11 - Denmark
echo 12 - Australia
echo 13 - New Zealand
echo 14 - United Kindom
echo 15 - Finland
set /p number="Select country: "
If "%number%"=="2" set "number=2 1"
If "%number%"=="4" set "number=6"
If "%number%"=="5" set "number=7"
If "%number%"=="6" set "number=13"
If "%number%"=="7" set "number=14"
If "%number%"=="8" set "number=15"
If "%number%"=="9" set "number=16"
If "%number%"=="10" set "number=17 1"
If "%number%"=="11" set "number=19"
If "%number%"=="12" set "number=20"
If "%number%"=="13" set "number=21"
If "%number%"=="14" set "number=22"
If "%number%"=="15" set "number=23"
echo %number% > number.txt
Из приведённого кода работают только пункты. когда значение равно 2 и 10.
Если добавить пробел после цифры в кажой строке (пример ниже),тогда код выполняется верно.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@echo off
echo 1 - Netherlands
echo 2 - Belgium-Dutch
echo 3 - Czech Republic
echo 4 - Slovak
echo 5 - Slovenia
echo 6 - Poland
echo 7 - Swedish
echo 8 - Germany
echo 9 - Austria
echo 10 - Switzerland-German
echo 11 - Denmark
echo 12 - Australia
echo 13 - New Zealand
echo 14 - United Kindom
echo 15 - Finland
set /p number="Select country: "
If "%number%"=="2" set "number=2 1"
If "%number%"=="4" set "number=6 "
If "%number%"=="5" set "number=7 "
If "%number%"=="6" set "number=13 "
If "%number%"=="7" set "number=14 "
If "%number%"=="8" set "number=15 "
If "%number%"=="9" set "number=16 "
If "%number%"=="10" set "number=17 1"
If "%number%"=="11" set "number=19 "
If "%number%"=="12" set "number=20 "
If "%number%"=="13" set "number=21 "
If "%number%"=="14" set "number=22 "
If "%number%"=="15" set "number=23 "
echo %number% > number.txt
Pause
Подскажите в чём я не прав, так как по логике цифры должны возвращаться,как указано в операторах if.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2017, 10:04
Ответы с готовыми решениями:

Функция get set
Ребят, помогите разобраться. Создаю класс с полем protected,потом через функцию get-set пытаюсь получить доступ к полю, однако у меня...

Функция упорядочивания элементов set
Возникла проблема на классах (элементами сет были классы). Но я попробовал такую вещь с int, и появилась та же ошибка. bool com (const...

Set своих элементов и функция lower_bound
Создал структуру "segments" и написал для неё оператор "<": bool operator<(segment a, segment b) { return a.left < b.left; } ...

8
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
04.04.2017, 11:37
Лучший ответ Сообщение было отмечено denshik как решение

Решение

Цитата Сообщение от denshik Посмотреть сообщение
по логике цифры должны возвращаться,как указано в операторах if.
То есть логику if вы не понимаете?
Code
1
2
3
4
5
6
Вводим 4
if 4==4 set number=6
следующее подходящее условие
if 6==6 set number=13
след. подходящее условие
if 13==13 set number=21
далее подходящих условий нет, поэтому number остается равным 21.
Все логично - именно так оператор if работает во всех языках программирования.
Для того, чтобы проверка заканчивалась на первом подходящем условии используется конструкция
Code
1
2
3
4
5
6
7
8
9
if условие then
 код
elseif условие then
 код
elseif условие then
 код
else
 код
end
но в батниках ее нет. А реализация сложного ветвления (используя только if и else) будет весьма неудобной и сложной.
Поэтому проще применить безусловный переход на метку:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
set /p number="Select country: "
If "%number%"=="2" set "number=2 1"   & goto next
If "%number%"=="4" set "number=6"     & goto next
If "%number%"=="5" set "number=7"     & goto next
If "%number%"=="6" set "number=13"    & goto next
If "%number%"=="7" set "number=14"    & goto next
If "%number%"=="8" set "number=15"    & goto next
If "%number%"=="9" set "number=16"    & goto next
If "%number%"=="10" set "number=17 1" & goto next
If "%number%"=="11" set "number=19"   & goto next
If "%number%"=="12" set "number=20"   & goto next
If "%number%"=="13" set "number=21"   & goto next
If "%number%"=="14" set "number=22"   & goto next
If "%number%"=="15" set "number=23"   & goto next
 
:next 
echo %number%
Pause
И все будет работать как надо.
1
1 / 1 / 2
Регистрация: 08.03.2017
Сообщений: 67
04.04.2017, 15:12  [ТС]
Понял. Получает срабатывает вариант с пробелом в конце, потому что ищеться число+пробел. Совпадений не находиться и переходит к запиши результата в файл.
Благодарю.
0
1 / 1 / 2
Регистрация: 08.03.2017
Сообщений: 67
11.04.2017, 10:41  [ТС]
Garry Galler,
При использование оператора goto, какие образом обрабатываются варианты выбора 1 и 3, так как для них вы ничего в коде не прописали?

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
echo 1 - Netherlands
echo 2 - Belgium-Dutch
echo 3 - Czech Republic
echo 4 - Slovak
echo 5 - Slovenia
echo 6 - Poland
echo 7 - Swedish
echo 8 - Germany
echo 9 - Austria
echo 10 - Switzerland-German
echo 11 - Denmark
echo 12 - Australia
echo 13 - New Zealand
echo 14 - United Kindom
echo 15 - Finland
set /p number="Select country: "
If "%number%"=="2" set "number=2 1"   & goto next
If "%number%"=="4" set "number=6"     & goto next
If "%number%"=="5" set "number=7"     & goto next
If "%number%"=="6" set "number=13"    & goto next
If "%number%"=="7" set "number=14"    & goto next
If "%number%"=="8" set "number=15"    & goto next
If "%number%"=="9" set "number=16"    & goto next
If "%number%"=="10" set "number=17 1" & goto next
If "%number%"=="11" set "number=19"   & goto next
If "%number%"=="12" set "number=20"   & goto next
If "%number%"=="13" set "number=21"   & goto next
If "%number%"=="14" set "number=22"   & goto next
If "%number%"=="15" set "number=23"   & goto next
 
:next
echo %number% > number.txt
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
11.04.2017, 11:57
Цитата Сообщение от denshik Посмотреть сообщение
для них вы ничего в коде не прописали
нет уж извините
как в фильме "Операция Ы" - не мы а вы
взгляните на свой код, поданный в условии, именно в вашем коде отсутствуют варианты выбора 1 и 3го эха и соответственно так оно и идет далее и догадайтесь с трех раз как они должны сработать.
0
1 / 1 / 2
Регистрация: 08.03.2017
Сообщений: 67
11.04.2017, 12:43  [ТС]
В моём варианте, они сразу записывались в переменную и передавались в файл

Windows Batch file
1
echo %number% > number.txt
А в варианте с goto, мне не понятно, каким образом они записыаются в файл. Так как запись в файл вынесена в отдельную операцию :next.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
11.04.2017, 14:44
denshik,
какая разница в каком месте происходит запись, я вам русским могучим поясняю что в вашем коде отсутствуют условия
If "%number%"=="1"
If "%number%"=="3"
может быть вам так надо, это только вам и известно, как вы нам код дали так его дальше и модернизировали, мы не должны менять внутренние условия, а если они вам нужны, просто добавьте их, в чем проблема-то?

Добавлено через 1 час 28 минут
denshik,
и вообще не удобнее разве так поступить
Содержимое "file.txt":
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Netherlands=?
Belgium-Dutch=2 1
Czech Republic=?
Slovak=6
Slovenia=7
Poland=13
Swedish=14
Germany=15
Austria16
Switzerland-German=17 1
Denmark=19
Australia=20
New Zealand=21
United Kindom=22
Finland=23

Код:
Windows Batch file
1
2
3
4
5
6
@echo off
echo Выберите страну:
<"file.txt" (for /f "tokens=1-3 delims=[]=" %%a in ('find /n /v ""') do echo %%a - %%b& set "$_%%b[%%a]=%%b[%%c]")
echo:& set /p v=
>"number.txt" (for /f "tokens=2,4 delims=[]" %%a in ('set $_') do if %v%==%%a echo %%b)
exit
и кстати сразу видно как непонятно что должно быть в 1 и 3м пунктах - поставил знак ?
0
1 / 1 / 2
Регистрация: 08.03.2017
Сообщений: 67
13.04.2017, 11:55  [ТС]
Значения для 1 и 3, следующие

Code
1
2
3
Netherlands=1
 
Czech Republic=3
Уважаемый alpap, сможете пояснить строки 3 и 5 вашего кода.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
13.04.2017, 23:52
Цитата Сообщение от denshik Посмотреть сообщение
Значения для 1 и 3, следующие
тогда содержимое "file.txt" такое:
Кликните здесь для просмотра всего текста

Netherlands=1
Belgium-Dutch=2 1
Czech Republic=3
Slovak=6
Slovenia=7
Poland=13
Swedish=14
Germany=15
Austria=16
Switzerland-German=17 1
Denmark=19
Australia=20
New Zealand=21
United Kindom=22
Finland=23

Цитата Сообщение от denshik Посмотреть сообщение
пояснить строки 3 и 5
в 3й пробегаем по строкам "file.txt" нумеруя их попутно и выводим на экран номер и значение (страну) для выбора, а также загоняем в переменную $_... значение номер п/п=значение номер заданный
в 5й разбираем содержимое переменной $_ после выбора номера в 4й строке и при совпадении его с номером строки в переменной выводим значение (теперь уже это заданный номер см. выше) в файл "number.txt"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.04.2017, 23:52
Помогаю со студенческими работами здесь

Лямбда-функция: поиск нечётных значений в set<int>
Дан : set&lt;int&gt; st{1,2,3,4,5,6,7,8,9,10} .С помощью лямбда-функции реализовать поиск нечётных значений. #include&lt;set&gt; ...

Union(Set set1, Set set2) и intersect(Set set1, Set set2)
Напишите методы union(Set set1, Set set2) и intersect(Set set1, Set set2), реализующих операции объединения и пересечения двух множеств....

Ошибка SQL запрос: SET CHARACTER SET 'utf8';
Два года назад на одном из форумов некто задал вопрос (см. ниже), на который так никто и не ответил. У меня сейчас точная копия проблемы....

Чем отличается guid id {get; set;} от int id {get; set;}
Подскажите пожалуйста чем отличается guid id {get; set;} от int id {get; set;}?

"функция" с set get параметрами доступная из любого места программы
Доброй ночи! Господа, подскажите пожалуйста одну простую вещь. Чот до самого не доходит, а в поиске не получилось найти простого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru