Как создать cmd скрипт, содержащий меню?

Как создать cmd (bat) скрипт на Windows 10, который выводит меню с вариантами схем питания (энергосберегающая, сбалансированная, высокопроизводительная), дает пользователю время для выбора, автоматически выбирает опцию по умолчанию, если ничего не выбрано, печатает выбранный вариант и завершает работу через несколько секунд, и, если возможно, отображает варианты меню разными цветами? Как правильно настроить вывод русского текста в скрипте? Как организовать выбор нужной схемы питания после отображения меню?
  • 30 июля 2024 г. 9:53
Ответы на вопрос 2
Для создания cmd скрипта с меню в Windows 10, можно использовать следующий код:

```batch
@echo off
title Выбор схемы питания

echo Выберите схему питания:
echo 1. Энергосберегающая
echo 2. Сбалансированная
echo 3. Высокопроизводительная

choice /c 123 /n /m "Выберите схему питания (по умолчанию 1):"
if errorlevel 3 set scheme=Высокопроизводительная
if errorlevel 2 set scheme=Сбалансированная
if errorlevel 1 set scheme=Энергосберегающая

color 0A
echo.
echo Вы выбрали схему питания: %scheme%
timeout /t 5 >nul
```

Для вывода русского текста в cmd скрипте, можно задать кодировку UTF-8 и использовать специальные символы ANSI для управления цветами. Например:

```batch
@echo off
chcp 65001 >nul

color 0A
echo Пример текста с цветом.

pause >nul
```

Для организации выбора нужной схемы питания после отображения меню, можно использовать команду `choice`, которая позволяет пользователю выбирать опцию. После этого можно проверить выбор пользователя с помощью `if errorlevel` и присвоить соответствующее значение переменной `scheme`.

Надеюсь, это поможет вам создать требуемый скрипт с меню и цветным текстом на cmd. Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать.
1(важно) создаете текстовый файл и сохраняете его в формате UTF-8 (без BOM) 
2 открываете консоль win+R вводите cmd и жмете enter
3 вводите команду powercfg /L - получите список всех схем питания и самое главное - их идентификаторы
4 копируете код отсюда в текстовый файл и заменяете в строках с Powercfg -SETACTIVE айдишник на свои, полученные из предыдущего шага
@echo off
chcp 65001>nul

call :ECHO " --= Выбор системы питания =--" 0B
echo.
call :ECHO " E - ЭНЕРГОСБЕРЕГАЮЩАЯ" 0E
echo.
call :ECHO " S - СБАЛАНСИРОВАННАЯ" 0A
echo.
call :ECHO " V - ВЫСОКОПРОИЗВОДИТЕЛЬНАЯ" 0D
echo.
call :ECHO " -----------------------------" 0B
echo.

call :ECHO " по умолчанию = " 0B
call :ECHO " ВЫСОКОПРОИЗВОДИТЕЛЬНАЯ" 0C
echo.
call :ECHO " время для выбора " 0B
call :ECHO "7сек" 0C
echo.
CHOICE /T 7 /C ESV /D v /M "Сделайте выбор"

if %errorlevel% == 1 goto energo
if %errorlevel% == 2 goto sbalans
if %errorlevel% == 3 goto visoko

:energo
call :ECHO " -----------------------------" 0B
echo.
call :ECHO " выбрана" 0B
call :ECHO " ЭНЕРГОСБЕРЕГАЮЩАЯ" 0E
Powercfg -SETACTIVE a1841308-3541-4fab-bc81-f71556f20b4a
goto saz

:sbalans
call :ECHO " -----------------------------" 0B
echo.
call :ECHO " выбрана" 0B
call :ECHO " СБАЛАНСИРОВАННАЯ" 0A
Powercfg -SETACTIVE 381b4222-f694-41f0-9685-ff5bb260df2e
goto saz

:visoko
call :ECHO " -----------------------------" 0B
echo.
call :ECHO " выбрана" 0B
call :ECHO " ВЫСОКОПРОИЗВОДИТЕЛЬНАЯ" 0D
Powercfg -SETACTIVE 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

:saz

echo.
echo " Завершение программы через 3 сек"
>nul timeout/nobreak 3
chcp 866>nul

exit /b
 
:ECHO
chcp 866>nul
 
for /f %%i in ('"prompt $h& for %%i in (.) do rem"') do (set Z=%%i)
pushd "%TEMP%" && (
    <nul>"%~1^" set /p="%Z%%Z%  %Z%%Z%"
    findstr /a:%2 . "%~1^*"
    del "%~1^"
    popd
    )
chcp 65001>nul
exit /b

В этой строке CHOICE /T 7 /C ESV /D v /M "Сделайте выбор" изменяйте на какие буквы будет реакция выбора 'ESV', а между /D и /M - какой выбор по умолчанию.
Похожие вопросы