我看到三種可能的解決方法。
1)構建組合多個for-parameters的行。
@echo off
SETLOCAL EnableDelayedExpansion
set "line="
for %%a in ("line1"
"line2"
"line3"
"line4"
) do set line=!line!%%~a
echo !line!
2)留下了「報價」在每行
@echo on
SETLOCAL EnableDelayedExpansion
set "line=line1 & x#"^
"line2 & a#"^
"line3 & b #"^
"line4 & c "
set "line=!line:#" "=!"
echo !line!
每一行的第一個空間是很重要的結束,因爲插入符號可以作爲多字符,但它也逃脫第一個字符,所以一個報價也會逃脫。
所以我在建立這條線之後替換了「#」。
編輯補充:3)消失的報價
setlocal EnableDelayedExpansion
echo "A very long line I want to !"=!^
split into two lines"
在我看來,這是最好方式,它可以作爲解析器首先看到的報價,因此最後插入符的工作,因爲它似乎超出了引號。
但是這個!"=!
表達式將擴展名爲"=
的變量,但是這樣的變量名稱不能存在(等號僅能作爲第一個字符出現),所以它擴展爲空。
您還可以創建安全表達式,它們將始終脫離引號,如果行中存在引號或不引號,則它們將獨立。
!"^"=!
echo This multiline works !"^"=!^
as expected
echo "This multiline works !"^"=!^
too"
如果你想避免延遲擴展,你也可以使用 - 對於迴路狀
for %%^" in ("") do (
echo "This multiline works %%~"^
too"
)
來源
2011-01-10 09:05:19
jeb
答案並不簡單,但這些都是一些很酷的技巧!我希望我可以有多個upvotes。謝謝! – 2011-01-10 14:45:23
我真的很喜歡方法#1。這種方法有什麼問題嗎? – djangofan 2012-09-14 00:18:30