You've got you're ECHO ON / OFF the wrong way round, I think:
ECHO OFF
ECHO HAPPY BIRTHDAY MS-DOS
ECHO ON
is perhaps more what you want. But the initial ECHO OFF is still echoed, so perhaps
@ECHO OFF
ECHO HAPPY BIRTHDAY MS-DOS
ECHO ON
is better, to suppress the initial ECHO OFF being itself echoed. But ECHO ON at the end of a batch file isn't needed, so it could be:
@ECHO OFF
ECHO HAPPY BIRTHDAY MS-DOS
without problems. Of course
@ECHO HAPPY BIRTHDAY MS-DOS
is even shorter, if you're only using a single command in a batch file, why have a second just to turn command echoing off when you could use @ to suppress echoing a single line?.
This pedantry brought to you by boredom, available now at all good newsagents. To celebrate MS-DOS I did actually test all the above by the power of COPY CON, as 64 bit Windows doesn't actually include MS-DOS support, so COPY CON in cmd.exe was the nearest I could get to the good old days (it's also probably better than EDLIN).
/ Some DOS 3.x version (3.31?) on a PC-XT clone with 512kb of RAM, EGA graphics and 10 whole megabytes of hard disk space was the first DOS for me.