Jeje no necesitas hacer todo eso.. un menu se hace asi:
Con esto queda mejor, porque no muestra ningun mensaje de error, sino que no hace nada.
Lo de set "opcion=" es para que las siguientes veces que vuelva al menu, se borre el contenido de %opcion% para que si el usuario pone enter sin escribir nada, no vaya a donde fue la vez anterior.
			Código (dos) [Seleccionar] 
:menu
cls
echo+
echo+
echo              1.- Ver datos de autor.
echo              2.- Mirar mensaje.
echo              3.- Salir del programa.
echo+
echo+
set "opcion="
set /p "opcion= elija a donde desea ir: " 
if not defined opcion (goto menu)
if %opcion%==1 (goto :autor)
if %opcion%==2 (goto :mensaje)
if %opcion%==3 (goto :salir)  
goto :menu
Con esto queda mejor, porque no muestra ningun mensaje de error, sino que no hace nada.
Lo de set "opcion=" es para que las siguientes veces que vuelva al menu, se borre el contenido de %opcion% para que si el usuario pone enter sin escribir nada, no vaya a donde fue la vez anterior.
