I would go about this a different way, since you can not possibly account for every name that someone would enter. You have already been given a suggestion for using a "pick-list" for the users to choose from, mine will handle only the names that you provide a subroutine process to account for that particular name. I have also changed the variable from"hello" to "name" (makes things easier to follow).
@echo off
:top
set /p %name%=Enter Name:
echo Hello, %name%
call :%name% 2>nul
if errorlevel 1 (
echo Bad name
goto top)
goto :eof
:: Provide a subroutine for each user name below
:bob
echo Running specific commands for Bob...
goto :eof
:john
echo Running specific commands for John...
goto :eof
To carry this one step further, to retrieve the user's feeling:
@echo off
:top
set /p name=Enter Name:
echo Hello, %name%
call :%name% 2>nul
if errorlevel 1 (
echo Bad name
goto top)
:getfeeling
set /p Feeling=How are you feeling %name% (Fine, Good, Great)?
echo %name% is feeling %feeling%...
call :_%feeling% 2>nul
if errorlevel 1 (
echo Bad feeling...
goto getfeeling)
goto :eof
:: Provide a subroutine for each user name below
:bob
echo Running specific commands for Bob...
goto :eof
:john
echo Running specific commands for John...
goto :eof
:: Provide a subroutine for each user feeling below (start each with an underscore "_")
:_fine
echo Running commands for users that are feeling Fine...
goto :eof
:_good
echo Running commands for users that are feeling Good...
goto :eof
:_great
echo Running commands for users that are feeling Great...
goto :eof
I tried to keep it simple. You will still need to add the actions for each user and feeling.
Also, it does not take into account if the user enters his/her full name.
i.e. if the user enters Bob Smith, the script will still run for user Bob.
HTH