2017-10-17 16 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)によって解決されるかもしれません)、または置き換えられるものを変更できるか飛行機で 'ヘッダー'に? (**ヒント**:あなたが得たものを表示する/それが間違っていることを説明する_あなたが望む/期待していることを示す_)。それは後者であるならば、私はあなたが 'セットヘッダを配置する必要があります疑い= ...'(そしておそらく 'エコー%のヘッダ%') 'コール内側:doheader'関数が呼び出されるたび' 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 
関連する問題