Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Меню с вариантами выбора (http://forum.oszone.net/showthread.php?t=278434)

i-Lex 27-02-2014 09:30 2316520

Меню с вариантами выбора
 
Мне нужно сделать меню в bat-файле:
Какую операцию Вы хотите выполнить?

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

Iska 27-02-2014 09:51 2316530

Код:

choice /?

i-Lex 28-02-2014 07:38 2317077

Эм...
Код:

@echo off
echo 1) Переиндексайция
choice /? 1 start cons.exe /reindex

Так?

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

Iska 28-02-2014 13:52 2317235

Поскольку у Вас много пунктов, проще будет оформить их вывод посредством «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 2322510

Iska, Выдаёт такое:
http://yadi.sk/d/w7Q_C_00KNaWu

Iska 12-03-2014 12:40 2322523

Уберите «/d 7».

читать дальше »
У меня нет «Windows 7», потому я и написал:
Цитата:

Цитата Iska
Вот примерная болванка (не проверялось): »


i-Lex 12-03-2014 13:02 2322532

Iska, возможно ли сделать так, что бы меню не закрывалось и после завершения задачи - можно было выбрать другой пункт?

Iska 12-03-2014 13:23 2322544

Можно:
читать дальше »
Код:

@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 2323122

Либо так!

Код:

@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 2911962

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


Для примера:

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

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

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

iglezz 04-03-2020 15:13 2911972

Цитата:

Цитата Freddy1984
Возможно ли вообще »

Возможно, если читать справку и тему
примерно так
Код:

@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 2981082

Доброго всем.

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

megaloman 04-03-2022 00:55 2981085

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 итд


Время: 14:19.

Время: 14:19.
© OSzone.net 2001-