2017-10-17 7 views
1

Comment y parvenir?Regarder en avant? variables

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% 

Sortie prévue:

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

sortie maintenant: (valeurs abc et def ne sont pas affichés)

my header 


end 
my header 


end 

Merci d'avance! Apprécier toute solution.

Mise à jour: J'écris un script qui résume le résultat de l'exécution et l'affiche sur les premières lignes de sortie, par ex.

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

Pour autant que je sache, ce ne peut être atteint. –

+0

Est-ce le 'newline' avec lequel vous rencontrez un problème (qui peut être résolu par [la réponse de npocmaka] (https://stackoverflow.com/a/46789104/2096401)), ou de pouvoir modifier ce qui est substitué en 'header' à la volée? (** Astuce **: montrez ce que vous obtenez/décrivez comment c'est mal - ainsi que_ ce que vous voulez/attendez). Si c'est le dernier, je suppose que vous devrez mettre le 'set header = ...' (et éventuellement un 'echo% header%') dans une fonction 'call: doheader' à appeler quand' abc' ou 'def' change. – TripeHound

Répondre

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 

essayer.

Ou

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

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