Well, it would help if you had your batch syntax right! The correct code (according to wine) is:
@echo off
title "knockknock.bat - the knockknock joke game!"
color oe
cls
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
set /p.reply="knockknock! d:>"
cls
if not %reply%=="who is there?"
(echo "sorry, but you are not playing the game right!" goto:eof)
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
set /p reply="orange d:>"
cls
if not %reply%=="orange who?"
(echo "sorry,but you are not playing the game right!"goto :eof)
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo "orange you glad you've written your first windows shell script?"
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
echo .
I've dropped it to lower case as the first step to convert to a shell script. Windows isn't case sensitive and bash is. If you save it with a .bat suffix even kwrite will recognise the syntax!
However, it won't run in bash because although some of the basic syntax of batch and bash is similar (especially pipes and redirection), the commands are different.
As pags said, it's not clear what the task is. Are you supposed to install a batch interpreter into Linux? (That could be a reasonable goal as batch is just a primitive shell language, and wine includes a Linux version.) Are you supposed to convert the commands to some GNU shell equivalents? Does the instructor not know the difference? (Oh dear!)