So I've recently created a batch file with menu and let users input numbers between 0-17, but I want to make the batch file to goto startProg
if the users input something else (not number 0-17) or input empty value. In my current batch file, it will pass empty value and other inputs to the next section (the :changeLang
section).
My batch file:
::=================================================================
:startProg
@echo off
title The Sims 4 Language Changer
set lang=en_US
cls
::=================================================================
:menuList
echo This program will help you to change The Sims 4 language
echo Please run this program with Administrative Privileges!
echo Anyway, what's your choice, captain?
echo.
echo 0. None (Clear Registry)
echo 1. American English
echo 2. Czech (Czechia)
echo 3. Danish (Denmark)
echo 4. German (Germany)
echo 5. European Spanish
echo 6. Finnish (Finland)
echo 7. French (France)
echo 8. Italian (Italy)
echo 9. Japanese (Japan)
echo 10. Korean (South Korea)
echo 11. Dutch (Netherlands)
echo 12. Norwegian (Norway)
echo 13. Polish (Poland)
echo 14. Portuguese (Brazil)
echo 15. Russian (Russia)
echo 16. Swedish (Sweden)
echo 17. Chinese (Taiwan)
echo.
set choice=
set /p choice=Please type the number correctly:
if "%choice%"=="0" goto clearLang
if "%choice%"=="1" set lang=en_US
if "%choice%"=="2" set lang=cs_CZ
if "%choice%"=="3" set lang=da_DK
if "%choice%"=="4" set lang=de_DE
if "%choice%"=="5" set lang=es_ES
if "%choice%"=="6" set lang=fi_FI
if "%choice%"=="7" set lang=fr_FR
if "%choice%"=="8" set lang=it_IT
if "%choice%"=="9" set lang=ja_JP
if "%choice%"=="10" set lang=ko_KR
if "%choice%"=="11" set lang=nl_NL
if "%choice%"=="12" set lang=no_NO
if "%choice%"=="13" set lang=pl_PL
if "%choice%"=="14" set lang=pt_BR
if "%choice%"=="15" set lang=ru_RU
if "%choice%"=="16" set lang=sv_SE
if "%choice%"=="17" set lang=zh_TW
cls
::=================================================================
:changeLang
> "%temp%\language.reg" echo REGEDIT4
>>"%temp%\language.reg" echo.
>>"%temp%\language.reg" echo [HKEY_LOCAL_MACHINE\SOFTWARE\Maxis\The Sims 4]
>>"%temp%\language.reg" echo "Locale"="%lang%"
>>"%temp%\language.reg" echo.
>>"%temp%\language.reg" echo [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Maxis\The Sims 4]
>>"%temp%\language.reg" echo "Locale"="%lang%"
>>"%temp%\language.reg" echo.
regedit /S "%temp%\language.reg" >nul
"%windir%\regedit.exe" /S "%temp%\language.reg" >nul
del /F /Q "%temp%\language.reg" >nul
cls
::=================================================================
:finalStep
echo The Sims 4 language changed to %lang%!
pause
exit
::=================================================================
:clearLang
reg delete "HKLM\SOFTWARE\Maxis\The Sims 4" /F
reg delete "HKLM\SOFTWARE\Wow6432Node\Maxis\The Sims 4" /F
cls
echo The Sims 4 registry data cleared!
pause
exit
The problem is that I don't want to change:
if "%choice%"=="XX" set lang=XXXXX
to:
if "%choice%"=="XX" goto XXXXX
Because it will make my batch file bigger by creating many goto XXX
sections.
I also do not want to create multiple if not
command because it's not efficient.