0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 46
1

Выбор действия, выбор нескольких позиций одновременно

17.02.2017, 20:19. Показов 1619. Ответов 7
Метки нет (Все метки)

Добрый вечер, знатоки!
Весь день ломаю голову над тем, как организовать меню и переход по командам скрипта, прошу помощи!
Необходимо организовать меню, в котором будет несколько позиций, в которых задается необходимая переменная. Одна из позиций меню должна выполнять команды для всех предыдущих позиций поочередно.

Уточнение: во всех позициях, кроме последней, указывается DN от OU в домене, очень длинная строка. Поэтому не хотелось бы дублировать эти строки в скрипте. Для примера, вот такой код:

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
@echo off
chcp 1251
echo Выберите:
echo 1 - первое
echo 2 - второе
echo 3 - оба
set /p chose="Ваш выбор: "
echo "Вы выбрали - %chose%"
 
 
if %chose% equ 1 (
set ou="первая очень длинная строка, которую не хочется повторять"
)
 
if %chose% equ 2 (
set ou="вторая очень длинная строка, которую не хочется повторять"
)
 
if %chose% equ 3 (
что написать, чтобы были выбраны одновременно первая и вторая переменные ou?
)
 
start здесь идут команды для заданной переменной %ou%
 
pause
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2017, 20:19
Ответы с готовыми решениями:

Выбор действия из нескольких вариантов нажатием двух кнопок, case of
Есть несколько действий. Необходимо написать выбор действия посредством нажатия кнопки TButton1 и...

Арифметические действия над числами. Выбор номера действия. Перевод с Pascal
Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3...

Выбор кнопок одновременно
Здравствуйте, есть допустим три кнопки. У них есть эффект, если он были нажаты - они остаются...

Выбор действия
есть калькулятор, в него можна вводить данные и подсчитывать. НО! если вписать 2+2*2 он выдаст 8, а...

7
4205 / 2083 / 653
Регистрация: 26.04.2015
Сообщений: 6,720
17.02.2017, 22:44 2
без понимания стр23 как-то так
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
...
if %chose% equ 1 (
set ou1="первая очень длинная строка, которую не хочется повторять"
)
 
if %chose% equ 2 (
set ou2="вторая очень длинная строка, которую не хочется повторять"
)
 
if %chose% equ 3 (
set ou3=%ou1%%ou2%
)
...
почему самое важное вы всегда считаете второстепенным
0
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 46
18.02.2017, 09:31  [ТС] 3
alpap, такой вариант не могу применить :-( так как:


Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if %chose% equ 1 (
set ou1="первая очень длинная строка, которую не хочется повторять"
)
*
if %chose% equ 2 (
set ou2="вторая очень длинная строка, которую не хочется повторять"
)
*
if %chose% equ 3 (
set ou3=%ou1%%ou2%
)
 
adfind -b %ou%
далее еще команды
pause
в основном коде (после выбора меню) переменная ou не меняется по порядковому номеру.
Да и объединять ou в одну строку нельзя, нужно их только поочередно подставить в секцию выполнения основного кода. Думается, здесь надо каким-то образом использовать for...
0
4205 / 2083 / 653
Регистрация: 26.04.2015
Сообщений: 6,720
18.02.2017, 11:11 4
Цитата Сообщение от n1GT Посмотреть сообщение
в основном коде
ТАК ГДЕ???!!!... ЭТОТ ОСНОВНОЙ КОД???!!!...
зачем вы просите о помощи не приводя ничего того с чем именно надо работать, найдите хоть одного здесь на форуме кто сможет угадать как формируется ваша переменная и как она должна подставляться в 3ем условии.

Добавлено через 20 минут
вот исходя из логики.
например 3е условие должно выполниться, если выполнены первые два, но нет же они исключаю друг друга, значения разные, имя переменной одно и тоже - перезаписывается, так как выбор одновременно первых двух условий произойти не может, то при том же имени переменной не получим их сумму или почередный вывод (даже тут неясность). Нужен хотя бы алгоритм, поясняющий четко что имеется ввиду под
Цитата Сообщение от n1GT Посмотреть сообщение
что написать, чтобы были выбраны одновременно первая и вторая переменные ou?
Добавлено через 7 минут
после общения с духами, такой, например, пример:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo off
set /p "x=Сделайте выбор: 1,2,3 "
if %x%==1 set ou=v1
if %x%==2 set ou=v2
if %x%==3 for %%a in (v1 v2) do call :v "%%~a"
if defined ou echo %ou%
pause& exit
 
:v
 echo %~1
exit /b
Добавлено через 1 минуту
на уровне значений переменной, которые могут быть переменными и заданными.
1
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 46
18.02.2017, 12:50  [ТС] 5
alpap, я не привожу основной код, потому что там не содержится работа с переменной OU - она обрабатывается лишь один раз. В приведенном мной примере выше - это строка 13 (там где adfind -b %ou%). Все, больше ее нигде нет, поэтому копировать остаток гигантского кода я не вижу смысла...

Признаю, что я может быть недостаточно корректно выразил условие задачи. Сложно объяснить, но краткая суть такая:
Меню, в котором объявляется два пункта, каждый из которых задает свое значение переменной OU. Имя переменной OU не должно меняться, то есть, не должно быть OU1 или OU2, т.к. в основном коде она хоть и вызывается всего один раз в виде OU, но может возникнуть потребность использовать ее многократно. Третий пункт меню выполняет основной код с переменной OU подставляя ей значения сначала из первого пункта меню, затем из второго.

В общем, за 9 часов колупания, я все-таки родил это! Надеюсь, кому-нибудь такое извращение пригодится еще, кроме меня :-) Думаю, из кода будет понятнее, что мне было нужно (тот случай, когда машинный код понятнее человеческого языка). Вызовы notepad и mspaint подставлены для наглядности использования, не более:

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
@echo off
chcp 1251>nul
echo Выберите:
echo H - одно
echo I - второе
echo W - третье
echo A - все вместе
set /p chose="Ваш выбор: "
cls
 
set ou1="ПЕРВАЯ очень длинная строка, которую не хочется повторять"
set ou2="ВТОРАЯ очень длинная строка, которую не хочется повторять"
set ou3="ТРЕТЬЯ очень длинная строка, которую не хочется повторять"
 
if %chose% equ h set ou=%ou1% & goto task
if %chose% equ i set ou=%ou2% & goto task
if %chose% equ w set ou=%ou3% & goto task
if %chose% equ a set all=%ou1% %ou2% %ou3%
 
for %%a in (%all%) do set ou=%%~a & call:task
 
:end
pause
exit
 
:task
notepad %ou%
mspaint
if %chose% neq a goto end
0
alpap
18.02.2017, 13:57
  #6

Не по теме:

ну вот, вы все-таки использовали имена промежуточных переменных ou(n+1), примерно это в первый раз я и предлагал, назвать третью мог и ou, единственно не было в условии использовать первые два выхлопа попеременно.

0
197 / 207 / 69
Регистрация: 09.02.2016
Сообщений: 1,040
18.02.2017, 14:40 7
Вы бы в 19 строчке написали чо нить типа екзита или
Windows Batch file
1
echo выбор сделан не верно&goto 1
А то если человек промахнется буквой,то начнет выполняться 20 строчка.
0
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 46
18.02.2017, 14:57  [ТС] 8
ZoOoO, точно!! Про это-то я и забыл!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2017, 14:57

Выбор случайного действия
Тоесть у меня есть: if (hi == "Привет") { Console.WriteLine("Привет");...

Выбор действия с помощью меню
Написать программу, которая запрашивает исходные данные и проводит над ними выбранное пользователем...

Выбор арифметического действия в ComboBox
Делаю безумие! Подскажите, как работать с ComboBox: ComboBox1->Items->Add("Сложение");...

Выбор действия нажатием на кнопку
Есть элементарный код: class Program { static void Main(string args) { ...

CSS - выбор элемента с несколькими классами одновременно
Здравствуйте, подскажите, возможно такое? (не добавляя какой-то отдельный класс или id) ...

выбор строк из таблицы, одновременно по нескольким условиям
здравствуйте. есть таблица(t1) с полями: дата(формат дата/время), id_s(числовое),...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.