コマンドプロンプトでCALLと^を使って遅延展開する。
バッチファイルでは、CALLと%%を使って遅延展開ができました。
for %%i in (aaa bbb ccc) do (
set xxx=%%i
call echo %%xxx%% "%%xxx%%"
)
しかし、この手はコマンドプロンプトで使えませんでした。
しかし、^を使えばできます。例えば、%^xxx%、%xxx^%、...など。
for %i in (aaa bbb ccc) do (
set xxx=%i
call echo %xxx^% ^"%xxx^%^"
)
しかし、本当は、^を使わなくても、CALLだけでもできます。
set xxx=
for %i in (aaa bbb ccc) do (
set xxx=%i
call echo %xxx% "%xxx%"
)
要は1回目の解析パスで環境変数の名前が一致しなければよいのです。
%環境変数%の置換処理は^のエスケープ処理より先なので、環境変数の名前を擬装するのに^が使えます。
擬装した名前があれば駄目ですが。。。
また、"~"で囲まれても駄目です。
set xxx^^=aaa
set xxx=bbb
echo %xxx^% → aaa
echo "%xxx^%" → "aaa"
---
set xxx^^=
set xxx=bbb
echo %xxx^% → %xxx%
echo "%xxx^%" → "%xxx^%"
call echo %xxx^% → bbb
call echo "%xxx^%" → "%xxx^^%"
call echo ^"%xxx^%^" → "bbb"
« HTAやHTML、Excel VBAなどでWScript.ShellのPopup(時間指定)を使う。 | トップページ | ひとつのスクリプトから同時に複数のMsgBoxを出す。 »