他の 2 つの変数で構成される変数の値を取得しようとしています。これを機能させる唯一の方法は、FOR コマンドに /F スイッチを付けて使用し、2 つ目のコマンド シェルを開くことです。
SET A=This
SET B=That
SET ThisThat=YES!
FOR /F %I IN ('ECHO %A%%B%') DO cmd.exe /C ECHO %%I%
出力:
C:\>cmd.exe /c echo %ThisThat%
YES!
これを行うためのよりエレガントな方法を知っている人はいますか?
アップデート
これは、私が達成しようとしていたことのより良い説明です(そして、y'allの、特にAaciniの応答を使用して達成できました)
Rational BuildForge プロジェクトでは、デプロイメント ターゲット ホストごとに環境変数を定義しています。例:
CURAM_HOST_NAME_DEV=DDW5T
CURAM_HOST_NAME_UAT=DUW5T
CURAM_HOST_NAME_TRN=DTW5T
CURAM_HOST_NAME_PRD=DPW5P
別の変数 HOST には、デプロイ先の環境が含まれています。デプロイ コードはすべてのデプロイ ターゲットに共通であり、変数 CURAM_HOST_NAME を使用するため、デプロイ先の HOST に対応する変数の値にこの変数を設定する必要がありました。以下はトリックを行います:
@ECHO OFF
SET CURAM_HOST_NAME_DEV=DDW5T
SET CURAM_HOST_NAME_UAT=DUW5T
SET CURAM_HOST_NAME_TRN=DTW5T
SET CURAM_HOST_NAME_PRD=DPW5P
SET HOST=DEV
CALL ECHO %%CURAM_HOST_NAME_%HOST%%%
SET HOST=UAT
CALL ECHO %%CURAM_HOST_NAME_%HOST%%%
SET HOST=TRN
CALL ECHO %%CURAM_HOST_NAME_%HOST%%%
SET HOST=PRD
CALL ECHO %%CURAM_HOST_NAME_%HOST%%%
出力:
DDW5T
DUW5T
DTW5T
DPW5P
BuildForge ステップで、この特定の変数を設定するコードは次のようになります。
.bset env "CURAM_HOST_NAME=`CALL ECHO %%%CURAM_HOST_NAME_%%HOST%%%%`"
(BF パーサーには追加の % が必要です)
HOST 変数の値が DEV の場合、ログに次のように生成されます。
1026 5/3/14 7:34 PM STEP .bset env "CURAM_HOST_NAME=`CALL ECHO %%%CURAM_HOST_NAME_%%HOST%%%%`"
1027 5/3/14 7:34 PM EXEC .bset env 'CURAM_HOST_NAME' = 'DDW5BTH
どうもありがとうございました。あなたの答えに賛成票を投じることができる評判があればいいのに!
ヨゼフ