I am really confused with this problem. I'm trying to write a power plan switcher (because my laptop seems to have a issue with it constantly resetting to power saving for no reason) and I've got the choice prompt to work.
Both pieces of code work but if I were to type 1 to select no power plan lock it would run the code just fine but then the second choice also runs without asking. I don't really understand why it's happening.
I thought I muddled up the numbers so I double checked them but they are fine.
Here is the code.
echo power plan locker
echo by hummingrofl560
echo please mark your selection below.
echo ==================================
echo 1. no plan locked - use this before changing plans. also allows changing of plan settings.
echo 2. power saving - Saves energy by reducing your computer's performance where possible.
echo 3. balanced/automatic (default) - automatically balances performance with energy consumption on capable hardware.
echo 4. high performance - Favours performance but may use more energy.
echo 5. quiet mode - reduces performance but makes it quieter.
choice /N /C:12345 /M "please make your choice"%1
IF ERRORLEVEL ==1 GOTO ONE
IF ERRORLEVEL ==2 GOTO TWO
IF ERRORLEVEL ==3 GOTO THREE
IF ERRORLEVEL ==4 GOTO FOUR
IF ERRORLEVEL ==5 GOTO FIVE
:ONE
echo disabling power plan lock.
c:\powerplans\Default_no_specified_power_plan.reg
echo power plan lock disabled.
echo you must restart your computer before new power plan settings can take effect.
pause
:TWO
echo enabling lock for "balanced/automatic"
c:\powerplans\Specify_Automatic_power_plan.reg
echo plan locked to "balanced/automatic".
echo you must restart your computer before new power plan settings can take effect.
pause
There are at least two problems in your code.
You're using the wrong syntax to check the errorlevel.
IF [NOT] ERRORLEVEL number commandIf you try to compare with an exact match use
if %ERRORLEVEL% == 1instead.Second problem: A function in batch has to end or return somehow.