You may also use a strange trick that combines a TAB character plus several BS ones to move the cursor up any number of lines:
@echo off
setlocal EnableDelayedExpansion
rem Get a BS and TAB control characters
for /F %%a in ('echo prompt $H ^| cmd') do set "BS=%%a"
set "TAB= " & REM Be sure that TAB variable contains an Ascii 9 character
rem Leave some empty lines and do a PAUSE
echo Three empty lines below + pause
echo/
echo/
echo/
pause
rem Get width of screen buffer, set number of lines to go above
for /F "tokens=2" %%a in ('mode con ^| findstr "Col"') do set /A buffWid=%%a, linesAbove=3
rem Assemble the "go above" control string with the proper number of BSs
set "BSs="
set /A "cntBS = 2 + (buffWid + 7) / 8 * linesAbove"
for /L %%i in (1,1,%cntBS%) do set "BSs=!BSs!!BS!"
rem Move cursor up the desired number of lines
echo %TAB%!BSs!
echo Hello,
echo World
echo This line overwrites the one with PAUSE output
IMPORTANT: You must be sure that the line set "TAB= "
effectively contains a TAB (Ascii 9) character, not just spaces.
Output before the PAUSE:
Three empty lines below + pause
Presione una tecla para continuar . . .
... and after the PAUSE:
Three empty lines below + pause
Hello,
World
This line overwrites the one with PAUSE output
Tested on Windows 8.1
This method was discovered by DosTips user neorobin and is fully described at this topic.