2016-08-30 36 views
1

可變我有這樣一個批處理腳本變量:批處理腳本 - 回聲 n

Set myvar=hello\nworld 

當我回聲MYVAR,我得到了整個你好\ nworld字面上。我怎麼能要求它解析我的\ n並將它解釋爲一個新的行字符,以便我可以用兩行來回應它?

+2

您可以定義一個換行符變量'\ N'與'設置MYVAR然後用它=你好\ n world' – jeb

回答

2

如果你的問題實際上是指「?如何在變數中嵌入新行符」,那麼這就是答案:

@echo off 
setlocal EnableDelayedExpansion 

set myvar=hello^ 

world 
echo !myvar! 

脫字符^字符意味着採取下一個字符從字面上看,但在這如果「下一個字符」僅僅是一個新行,所以從字面上將其作爲變量並且該命令繼續直到下一行(如往常一樣),因此set命令在world行之後結束。嵌入的<NL>只能通過延遲!擴展!才能正確處理。

嵌入式<NL>在其他情況下正確處理;例如:

for /F %%a in ("!myvar!") do echo %%a 
+1

'嵌入式只能通過delayed!expansion!。正確處理,並且在下一行中顯示如何使用FOR循環參數:-) – jeb

0

想象一下,有不同的編程語言和\n並不總是指「新行」;)。

echo hello&echo.world將做你想要的,如果你想在一行代碼中。否則,它是

echo hello 
echo.world 

在批處理echo.意味着新的生產線,或者如果.後跟一些文本就意味着迴響在新的一行文字。

+1

你不應該使用'echo.'留下一個空行!用'echo /'代替。請參閱:[本文](http://www.dostips.com/forum/viewtopic.php?t=774):_「技術上來說,ECHO是CPU週期的嚴重浪費......當腳本遇到」 ECHO「,它不會立即打印空白行,但會首先瀏覽%PATH%上的每個目錄,以查看是否有名爲ECHO的文件執行」_「。 – Aacini

+1

'echo hello&echo.world'只是兩個命令。我不會把它們視爲換行。而且你不能將它們放在一個變量中 – jeb