2017-10-17 65 views
1

如何實現這一目標?批量展望未來?變量

set newline=^& echo. 
set header=my header^%newline% %abc%^%newline%%def%^%newline%end 

...

set abc=some text 
set def=some more text 
echo %header% 

...

set abc=hello 
set def=there 
echo %header% 

預期輸出:

my header 
some text 
some more text 
end 
my header 
hello 
there 
end 

現在輸出:(不顯示ABC和DEF值)

my header 


end 
my header 


end 

在此先感謝!欣賞任何解決方案。

更新: 我正在編寫一個腳本,用於總結執行結果並在輸出的第一行顯示該腳本,例如,

c:\> myScript.bat 
---------------------------------------- 
Execution failed with cmd1=UP, cmd2=DOWN 
cmd2 failed 
---------------------------------------- 

COMMAND: cmd1 
[output of cmd1] 

cmd1 result is "UP" 

COMMAND: cmd2 
[outout of cmd2] 

cmd2 result is "DOWN" 
+0

據我所知,這是無法實現的。 –

+0

它是你遇到問題的'換行符'(可能是[npocmaka的回答](https://stackoverflow.com/a/46789104/2096401)),或者是能夠改變被取代的進入'頭部'在飛行中? (**提示**:顯示你得到/描述它是如何錯誤的,以及顯示你想要什麼)。如果是後者,我懷疑你不得不在''call:doheader'函數內部設置'set header = ...'(也可能是'echo%header%'),以便每當'abc'或「def」變化。 – TripeHound

回答

1
@echo off 
REM Creating a Newline variable (the two blank lines are required!) 
set NLM=^ 


set NL=^^^%NLM%%NLM%^%NLM%%NLM% 
::::: 
set header=my header%NL% %abc%%NL%%def%%NL%end 

嘗試。

或者

setlocal EnableDelayedExpansion 
(set \n=^ 
%=Do not remove this line=% 
) 

set header=my header!\n! %abc%!\n!%def%!\n!end