訣竅使用符的行爲。
在Long commands split over multiple lines in Vista/DOS batch (.bat) file
插入符號還解釋爲下一個字符轉義字符,或在線路端它被用作多字符,但是這幾乎是相同的。
在生產線最後乾脆逃避的下一個字符,在這種情況下,<Linefeed>
,但有一個隱藏的功能,因此,如果轉義字符是一個<LF>
它被忽略,下一個字符被讀取並逃過一劫,但這種charater將永遠逃脫,即使它也是<LF>
。
現在,你可以理解
set NLM=^
rem Two empty lines are required here
的NLM變量只包含一個<LF>
字符。 但是,如果您嘗試將其與echo Line1%NLM%Line2
結合使用,則會失敗,因爲解析器會停止解析單個<LF>
。
但這部作品
echo Line1^
Line2
所以,你需要添加一個換行符逃脫入行,並且是NL-變量。 NL變量只包含三個字符。
NL=^<LF><LF>
如果這是擴展,它將創建只有一個轉義<LF>
作爲第一<LF>
後插入符號將被忽略。
Btw。在我看來,使用延遲擴展的換行要容易得多,因爲沒有必要逃脫任何東西。
在此示例中,我使用%=EMPTY=%
而不是空行(用於自我評論),但由於變量=EMPTY=
不能存在,所以它將展開爲空行。
setlocal EnableDelayedExpansion
(set NLM=^
%=EMPTY=%
)
echo Line1!NLM!Line2
編輯:使用<LF>
1追加一些提示有用)使用它作爲新行中的echo
setlocal EnableDelayedExpansion
(set LF=^
%=EMPTY=%
)
echo Line1!LF!Line2
2)使用它在一個括號塊分割的命令
setlocal EnableDelayedExpansion
(set LF=^
%=EMPTY=%
)
(
echo Line1%LF%set x=4%LF%echo !x!%LF%
)
3)在FOR/F循環中創建一個(幾乎)空的EOL字符集, ,因爲<LF>
是行分隔符,因此<LF>
的EOL與空行相同。
FOR /F ^"eol^=^
delims^=^" %%a in (myFile.php) do echo %%a
4)使用LF在一個FOR/F環
setlocal EnableDelayedExpansion
(set LF=^
%=EMPTY=%
)
set "var=Content1;Content2"
FOR /F "delims=" %%a in ("%var:;=!LF!%") do (
echo %%a
)
來源
2011-06-16 23:37:32
jeb
有什麼理由這樣做除了創建一個新的空行? – Mechaflash 2011-06-17 14:13:14
有很多,我給我的回答加了一些解釋 – jeb 2011-06-20 11:07:57