PDA

Показать полную графическую версию : [решено] Меню с вариантами выбора


i-Lex
27-02-2014, 09:30
Мне нужно сделать меню в bat-файле:
Какую операцию Вы хотите выполнить?

1) Переиндексация(reindex). (запустит cons.exe с параметром /reindex)
2) Регистрация.(Reg) (запускает с параметром /reg)
и так 6 пунктов.
Пункт выбирается по нажатию цифры пункта на клавиатуры (т.е. нажимается 1 и без нажатия enter произойдёт срабатывание нужного пункта)

Iska
27-02-2014, 09:51
choice /?

i-Lex
28-02-2014, 07:38
Эм...
@echo off
echo 1) Переиндексайция
choice /? 1 start cons.exe /reindex
Так?

Просто я в написании скриптов очень плохо разбираюсь.

Iska
28-02-2014, 13:52
Поскольку у Вас много пунктов, проще будет оформить их вывод посредством «echo». Вот примерная болванка (не проверялось):
@echo off
setlocal enableextensions enabledelayedexpansion

echo Выберете одно из:
echo.
echo 1. Переиндексация
echo 2. Регистрация
echo 3. bla-bla-bla 3
echo 4. bla-bla-bla 4
echo 5. bla-bla-bla 5
echo 6. bla-bla-bla 6
echo ================
echo 7. Отмена
echo.
choice /c 1234567 /m "Нажмите цифру, соответствующую Вашему выбору"

call :Choice%ErrorLevel%

endlocal
exit /b 0

:Choice1
start "" "cons.exe" /reindex
exit /b 0

:Choice2
exit /b 0

:Choice3
exit /b 0

:Choice4
exit /b 0

:Choice5
exit /b 0

:Choice6
exit /b 0

:Choice7
:Choice0
rem Nothing to do
exit /b 0

i-Lex
12-03-2014, 12:20
Iska, Выдаёт такое:
http://yadi.sk/d/w7Q_C_00KNaWu

Iska
12-03-2014, 12:40
Уберите «/d 7».

У меня нет «Windows 7», потому я и написал:
Вот примерная болванка (не проверялось): »

i-Lex
12-03-2014, 13:02
Iska, возможно ли сделать так, что бы меню не закрывалось и после завершения задачи - можно было выбрать другой пункт?

Iska
12-03-2014, 13:23
Можно:
@echo off
setlocal enableextensions enabledelayedexpansion

:Repeat

echo Выберете одно из:
echo.
echo 1. Переиндексация
echo 2. Регистрация
echo 3. bla-bla-bla 3
echo 4. bla-bla-bla 4
echo 5. bla-bla-bla 5
echo 6. bla-bla-bla 6
echo ================
echo 7. Отмена
echo.
choice /c 1234567 /m "Нажмите цифру, соответствующую Вашему выбору"

call :Choice%ErrorLevel%
goto :Repeat

endlocal
exit /b 0

:Choice1
start "" "cons.exe" /reindex
exit /b 0

:Choice2
exit /b 0

:Choice3
exit /b 0

:Choice4
exit /b 0

:Choice5
exit /b 0

:Choice6
exit /b 0

:Choice7
:Choice0
rem Nothing to do
exit /b 0

O L E G
13-03-2014, 18:09
Либо так!


@echo off
COLOR 06
cls
echo.
echo.
:start
echo 1. Установить драйвер защиты (обязательно) - 1
echo 2. Установить защиту реестра - 2
echo 3. Установить защиту (файлов, папок, драйверов, служб) - 3
echo 4. Показывать окно Командной Cтроки до запуска
echo пользователя (Для Доп Безопасности CMD.EXE) - 4
echo 5. Вывести подробный отчет по защите (папка logs) - 5
echo 6. Выход - 6
echo.
set /p choice= Введите цифру желаемого пункта:
rem if not '%choice%'=='' set choice=%choice:~0;1%
if '%choice%'=='1' goto 1
if '%choice%'=='2' goto 2
if '%choice%'=='3' goto 3
if '%choice%'=='4' goto 4
if '%choice%'=='5' goto 5
if '%choice%'=='6' goto 6
if not '%choice%'=='' echo "%choice%" неверный пунк
echo

goto start
:1
Свой код

goto start
:2
Свой код

goto start
:3
Свой код

goto start
:4
Свой код

goto start
:5
Свой код

goto start
:6
Свой код

Freddy1984
04-03-2020, 14:12
Приветствую всех.
Подскажите пожалуйста момент. После "Введите цифру желаемого пункта" мне допустим надо ещё накидать пару строчек текста, но через echo текст в консоли не отображается. Возможно ли вообще отобразить текст в консоле после "Введите цифру желаемого пункта" следующей строкой?


Для примера:

1. Установить драйвер защиты (обязательно) - 1
2. Установить защиту реестра - 2
3. Установить защиту (файлов, папок, драйверов, служб) - 3
4. Вывести подробный отчет по защите (папка logs) - 4
5. Выход - 5

Введите цифру желаемого пункта:

ТУТ ТЕКСТ БЛАБЛАБЛА.....

iglezz
04-03-2020, 15:13
Возможно ли вообще »
Возможно, если читать справку и тему @echo off
echo 1. bla
echo 2. bla
echo 3. bla
echo Введите цифру желаемого пункта:
echo ТУТ ТЕКСТ БЛАБЛАБЛА.....
choice /c 123 /n /m " "
if errorlevel 3 goto choice3
if errorlevel 2 goto choice2
if errorlevel 1 goto choice1
goto :eof

:choice1
echo 111
goto :finish

:choice2
echo 222
goto :finish

:choice3
echo 333
goto :finish

:finish
pause

Synapses
03-03-2022, 22:50
Доброго всем.

А как-то можно реализовать всё то же самое, только чтобы, например из 6 вариантов я выбрал сразу 1,3,4 и после моего выбора начало ставиться только это из выбранного мной.

megaloman
04-03-2022, 00:55
Synapses, множественный выбор возможностей@Echo Off
Call :Blank
:Begin
Cls
Set "Sel="
FOR /F "usebackq tokens=2 delims==" %%i In (`2^>nul Set "@P1"`) DO Call Set "Sel=%%Sel%%%%i,"
If Not "%Sel%"=="" Echo === Выбрано %Sel:~0,-1% &Echo.

Echo +++ Выбирайте: &Echo.

Echo 1 - возможность 1
Echo 2 - возможность 2
Echo 3 - возможность 3
Echo 4 - возможность 4
Echo 5 - возможность 5 k
Echo 6 - возможность 6

Echo.
CHOICE /C YXZ123456 /N /M "Y-завершить выбор, X-анулировать выбор, Z-завершить работу, 1,2,3,4,5,6"
Set /A Out=%Errorlevel%
Echo.

If %Out%==3 Exit /B
If %Out%==1 GoTo :Continue
If %Out%==2 Call :Blank &GoTo :Begin

Set /A Out=%Out%+97
Set /A @P%Out%=%Out%-100
GoTo :Begin

:Continue
FOR /F "usebackq tokens=2 delims==" %%i In (`2^>nul Set "@P1"`) DO Call :Sub%%i
Echo.
pause
Exit /B

:Blank
For /L %%i In (101,1,150) Do Set "@P%%i="
Exit /B 1

:Sub1
Echo Сделали возможность 1
Exit /B

:Sub2
Echo Сделали возможность 2
Exit /B

:Sub3
Echo Сделали возможность 3
Exit /B

:Sub4
Echo Сделали возможность 4
Exit /B

:Sub5
Echo Сделали возможность 5
Exit /B

:Sub6
Echo Сделали возможность 6
Exit /BВозможностей выбора может быть больше или именьше, например: 1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F,G итд




© OSzone.net 2001-2012