Разделить длинные команды на несколько строк через пакетный файл Windows

Правило для каретки:

Каретка dos-batch в конце строки добавляет line-continuation следующую строку, первый batch-script символ добавленной строки cmd-script будет экранирован.

Вы можете windows-batch использовать курсор несколько winbatch раз, но полная строка не batch-script должна превышать максимальную batch длину строки ~ 8192 символа line-continuation (Windows XP, Windows Vista windows-batch и Windows 7).

echo Test1
echo one ^
two ^
three ^
four^
*
--- Output ---
Test1
one two three four*

echo Test2
echo one & echo two
--- Output ---
Test2
one
two

echo Test3
echo one & ^
echo two
--- Output ---
Test3
one
two

echo Test4
echo one ^
& echo two
--- Output ---
Test4
one & echo two

Чтобы подавить windows-batch экранирование следующего winbatch символа, вы можете использовать winbatch перенаправление.

Перенаправление batch-files должно быть непосредственно cmd-script перед курсором. Но есть одно .bat любопытство с перенаправлением .bat перед курсором.

Если вы поместите batch-script маркер на каретку, маркер bat будет удален.

echo Test5
echo one 

Также можно batch-file встроить перевод строки в строку:

setlocal EnableDelayedExpansion
set text=This creates ^

a line feed
echo Test7: %text%
echo Test8: !text!
--- Output ---
Test7: This creates
Test8: This creates
a line feed

Пустая строка важна bat для успеха. Это работает line-continuation только с отложенным расширением, иначе batch-file остальная часть строки игнорируется bat после перевода строки.

Это batch работает, потому что курсор batch-files в конце строки игнорирует winbatch следующий перевод строки line-continuation и экранирует следующий символ, даже windows-batch если следующий символ также batch-file является переводом строки winbatch (на этом этапе возврат каретки .bat всегда игнорируется).

batch-file

line-continuation

2022-11-08T15:37:16+00:00
Вопросы с похожей тематикой, как у вопроса:

Разделить длинные команды на несколько строк через пакетный файл Windows