2010-07-20 65 views
14

如果是這樣如何?做批處理文件支持多行變量

是,批處理文件是瘸腿的,但我不能使用PowerShell的,我不喜歡寫一個真正的應用程序做這個簡單的任務....

編輯

我想要是沿着線的

set var="this is a 
multi 
line 
string " 

回答

14

或者你可以創建一個「真正的」換行符。

setlocal enableDelayedExpansion 
set NL=^ 


rem two empty line required 
echo first line !NL! second line 
set multi=Line1!NL!Line2 
set multi=!multi!!NL!Line3 
echo !Multi! 

有了這個變種的換行符是字符串中一個「正常」的角色,因此變量通常採取行動,你可以將它們分配到另一個變量,這是不可能的&echo.技巧(這是簡單實用任務)。

+0

這是我最初想要的。謝謝。 – 2011-08-12 21:22:15

11

這樣好嗎?

@echo off 
set var=kur 
set var2=kur2 
echo var is = "%var%" and var2 is = %var2% 

編輯
是什麼意思?

@echo off 
set nl=^& echo. 
echo this%nl%is%nl%multiline%nl%string 
+0

作品! -------- – 2010-07-20 22:19:56

+0

謝謝完美。 – 2010-07-20 22:52:18

+0

+1哇......你怎麼猜到這就是他打算做的事? – 2010-07-21 02:48:55

1

而現在 - 無需輔助SET命令:

echo this is a & echo multi & echo line & echo string 
2
SET myFlags=^
    a^
    b^
    c 
+0

對於'echo%myFlags%'或'echo!myFlags!'而言,我沒有工作。 – 2016-11-16 10:57:22

1

這是一個很老的問題,但我放在一起從@Fabricio和@jeb的解決方案都能夠正確工作,加入的混合一些可讀性:

setlocal enableDelayedExpansion 
set NL=^ 


rem two empty line required 
set var=this is a !NL!^
multi !NL!^
line !NL!^
string !NL! 

echo !var!