В общем случае вопрос не такой уж простой.
Первоначальный ответ без учёта того, что команды в скобкахВ данном случае можете заменить
|
на
^^^|
:
set LINE=block_image_update(map_partition("product_a"), package_extract_file("product.transfer.list"), "product.new.dat.br", "product.patch.dat") ^^^|^^^| abort("E2001: Failed to update product image.");
— экранируются
|
для
set
и ещё раз экранируются
|
и уже
^
для
echo
.
В данном случае можно использовать отложенное раскрытие переменных и экранировать
|
и
)
:
setlocal enabledelayedexpansion
set s=1
if %s% == 1 (
set LINE=block_image_update(map_partition("product_a"^), package_extract_file("product.transfer.list"^), "product.new.dat.br", "product.patch.dat"^) ^|^| abort("E2001: Failed to update product image."^);
echo !LINE! >> file
)