Ответы пользователя по тегу cmd/bat
  • Как сделать cmd скрипт с меню?

    black1277
    @black1277
    Вольный стрелок
    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 - какой выбор по умолчанию.
    Ответ написан
    2 комментария
  • Почему pause в cmd скрипте не предотвращает закрытие окна?

    black1277
    @black1277
    Вольный стрелок
    Вот так будет работать как функция
    @echo off
    
    set "path_bin_1=d:\TEMP\test.exe"
    call :testname
    
    echo "%path_bin_1%"
    echo "%filename%"
    
    pause
    
    exit
    REM тело функции располагаем в конце после оператора exit чтобы предотвратить выполнение в потоке.
    
    :testname
    echo "%path_bin_1%"
    for /F "delims=" %%a in ("%path_bin_1%") do (
        set file=%%~fa
        set filepath=%%~dpa
        set filename=%%~nxa
    )
    exit /B

    exit /B возвращает управление сразу после того места где был вызов процедуры
    goto теперь не нужен - убрали тело функции за оператор exit
    После pause можно писать другой код и опять вызывать call :testname
    Ответ написан
    4 комментария