It can be solved with a single echo.
You need a newline character \n
for this.
There are multiple ways to get a new line into the echo
1) This sample use the multiline caret to add a newline into the command,
the empty line is required
echo Hello^
world
2) The next solution creates first a variable which contains one single line feed character.
set \n=^
rem ** Two empty lines are required
Or create the new line with a slightly modified version
(set \n=^
%=DONT REMOVE THIS=%
)
And use this character with delayed expansion
setlocal EnableDelayedExpansion
echo Hello!\n!world
To use a line feed character with the percent expansion you need to create a more complex sequence
echo Hello^%\n%%\n%world
Or you can use the New line hack
REM Creating a Newline variable (the two blank lines are required!)
set \n=^
set NL=^^^%\n%%\n%^%\n%%\n%
REM Example Usage:
echo There should be a newline%NL%inserted here.
But only the delayed expansion of the newline works reliable, also inside of quotes.