Вкратце (возможно, когда-нибудь дополню ответ, если вспомню какие либо тонкости и соберусь с силами).
Чтобы разбить команду на несколько строк надо в конце каждой строки добавить символ
^
. Если после него будет идти пустая строка, то в команду будет вставлен перевод строки.
Пример.
echo ^
Hello,^
world!
выведет
Hello,
world!
Если использовать отложенное раскрытие переменных, то можно вывести текст, сохранённый в переменной:
setlocal enabledelayedexpansion
set A=^
Hello,^
world!
echo !A!
В тексте надо удваивать знаки процента, экранировать символом
^
специальные символы (его самого, символы перенаправления, соединения команд, закрывающую скобку (внутри составных команд), желательно, кавычку…), дважды экранировать восклицательные знаки при отложенном раскрытии переменных, если текст между ними может быть воспринят как имя переменной… В общем, упражняйтесь.
Ещё можете посмотреть тему
CMD/BAT: Возможность создания heredoc. Также, например, в теме
CMD/BAT: Пакетные макросы с параметрами рассматривается создание переменных (CR и LF), содержащих символы перевода строки и возврата каретки:
spoiler:: Определяет переменную ВОЗВРАТ КАРЕТКИ (используется как !CR!)
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
:: Определяет переменную ПЕРЕВОД СТРОКИ (используется как !LF!)
set LF=^
:: Две пустые строки сверху важны - не удалять!