« 環境変数の遅延展開を遅延展開する。 | トップページ | 改行文字変換フィルタをバッチファイルで作る。(その4) »

2008年11月11日 (火)

環境変数の置換文字列に環境変数を使う。

%環境変数:文字列1=文字列2%
で「文字列1」や「文字列2」に環境変数を使うには、「文字列1」や「文字列2」を通常展開、全体を遅延展開します。

!環境変数:%文字列1%=%文字列2%!

もし、「文字列1」や「文字列2」を遅延展開する必要があるとき、「文字列2」は遅延展開できます。

%環境変数:文字列1=!文字列2!%

しかし、「文字列1」は遅延展開できません。

%環境変数:!文字列1!=文字列2% → NG

「文字列1」(と「文字列2」)を遅延展開するには、「文字列1」(と「文字列2」)を遅延展開、全体をCALL %%で遅延展開します。

CALL %%環境変数:!文字列1!=!文字列2!%%

ただし、この場合の「文字列2」の遅延展開は、1パス目に行われるので、2パス目の通常展開時に評価されます。

「文字列2」が2パス目の通常展開時に評価されないようにするには、全体をCMD %%で遅延展開、「文字列2」の遅延展開をエスケープして2パス目に遅延させます。

CMD /V:ON /C %%環境変数:!文字列1!=^^!文字列2^^!%%

« 環境変数の遅延展開を遅延展開する。 | トップページ | 改行文字変換フィルタをバッチファイルで作る。(その4) »