批量展望未来?变量

问题描述:

如何实现这一目标?批量展望未来?变量

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

@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