2017-10-17 1 views
1

Wie erreichen Sie das?Batch-Vorschau? Variablen

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% 

Erwartete Ausgabe:

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

Output jetzt: (abc und def Werte nicht angezeigt werden)

my header 


end 
my header 


end 

Vielen Dank im Voraus! Schätze jede Lösung.

Update: Ich schreibe ein Skript, das das Ausführungsergebnis zusammenfasst und dies in den ersten Zeilen der Ausgabe, z.

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

Soweit ich weiß, kann dies nicht erreicht werden. –

+0

Ist es die 'Newline', mit der Sie ein Problem haben (die möglicherweise von [npocmakas Antwort] (https://Stackoverflow.com/a/46789104/2096401) behoben wird) oder um zu ändern, was ersetzt wird in 'header' im laufenden Betrieb? (** Tipp **: zeige, was du bekommst/beschreibe, wie es falsch ist _ und zeige, was du willst/erwartest). Wenn es Letzteres ist, vermute ich, dass Sie die 'set header = ...' (und möglicherweise eine 'echo% header%') in eine 'call: doheader' Funktion setzen müssen, die immer dann aufgerufen wird, wenn' abc' oder 'def' ändert sich. – TripeHound

Antwort

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 

dies versuchen.

Oder

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

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