Показать полную графическую версию : [решено] Меню с вариантами выбора
Мне нужно сделать меню в bat-файле:
Какую операцию Вы хотите выполнить?
1) Переиндексация(reindex). (запустит cons.exe с параметром /reindex)
2) Регистрация.(Reg) (запускает с параметром /reg)
и так 6 пунктов.
Пункт выбирается по нажатию цифры пункта на клавиатуры (т.е. нажимается 1 и без нажатия enter произойдёт срабатывание нужного пункта)
Эм...
@echo off
echo 1) Переиндексайция
choice /? 1 start cons.exe /reindex
Так?
Просто я в написании скриптов очень плохо разбираюсь.
Поскольку у Вас много пунктов, проще будет оформить их вывод посредством «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
Iska, Выдаёт такое:
http://yadi.sk/d/w7Q_C_00KNaWu
Уберите «/d 7».
У меня нет «Windows 7», потому я и написал:
Вот примерная болванка (не проверялось): »
Iska, возможно ли сделать так, что бы меню не закрывалось и после завершения задачи - можно было выбрать другой пункт?
Можно:
@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
Либо так!
@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
Введите цифру желаемого пункта:
ТУТ ТЕКСТ БЛАБЛАБЛА.....
Возможно ли вообще »
Возможно, если читать справку и тему @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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.