First use VER to detect the OS,by piping the output to FIND (not findstr) and looking for a 'significant string'. This only needs to be done once - so place it direcly after the @ECHO OFF
set running=NT
ver|find "1998" >nul
if not errorlevel 1 set running=DOS
"1998" is a significant string which should only appear in VER for Win98. Other valus to look for are "2222" (W98SE) and "3000" (WinME) - so simply repeat the line-pair for the strings you need to detect.
When you want to accept input, you need to use SET/P for NT or CHOICE for DOS
if %running%=NT set /p ....&goto :ntxxx :: else running DOS choice ...
where the label NTXXX is your processing for NT-input (you appear to allow "2" or "2." for example)
The CHOICE command reacts to a keystroke and sets ERRORLEVEL depending on the keystroke used. CHOICE/?
will show the syntax.
Since IF ERRORLEVEL xx
means "If errorlevel is xx OR GREATER"
then it's necessary to process the choice made in REVERSE order (last position=highest ERRORLEVEL first)
(I no longer have easy access to a pre-XP system, so all the above is from memory)
Interestingly, CHOICE re-appeared with Vista...