@echo off

:start

rem ----- メイン処理 -----

echo "ここはstartルーチンです"

rem ----- キー入力で分岐 -----

echo.
set userkey=
set /p userkey=終了する (Enter) / メイン処理を再度実行 (o + Enter) / サブ処理を実行 (p + Enter) ?
if not '%userkey%'=='' set userkey=%userkey:~0,1%
if '%userkey%'=='o' goto start
if '%userkey%'=='p' goto exec
goto quit

rem ----- サブ処理 -----

:exec

echo "ここはexecルーチンです"

rem ----- 終了 -----

:quit

pause

ユーザーの入力により、処理を分岐するバッチファイルです。
set /pを利用することによって、ユーザー入力の値を変数に設定します。

set /p 変数=(画面表示内容) ?

そして、入力した変数の先頭1文字(set userkey=%userkey:~0,1%)だけをif文で比較し、分岐します。
また、分岐する先の各ルーチンは「:」(コロン)の後にルーチン名を付与します。
goto (ルーチン名)で各ルーチンに分岐することが出来ます。

 c:\windows batch>test1.bat
"ここはstartルーチンです"

終了する (Enter) / メイン処理を再度実行 (o + Enter) / サブ処理を実行 (p + Enter) ?o
"ここはstartルーチンです"

終了する (Enter) / メイン処理を再度実行 (o + Enter) / サブ処理を実行 (p + Enter) ?p
"ここはexecルーチンです"
続行するには何かキーを押してください . . .

c:\windows batch>test1.bat
"ここはstartルーチンです"

終了する (Enter) / メイン処理を再度実行 (o + Enter) / サブ処理を実行 (p + Enter) ?
続行するには何かキーを押してください . . .