- 追加された行はこの色です。
- 削除された行はこの色です。
#navi(コマンド別)
#contents
////////////////////////////////////////////////////////////////////////////
*カレントディレクトリの局所化 [#a57efde3]
setlocal/endlocalの間では、環境変数だけでなくカレントディレクトリも局所化される。つまり、cd や pushd でカレントディレクトリを移動しても、endlocal で setlocal 時点の場所に戻る。
setlocal/endlocal の間では、環境変数だけでなくカレントディレクトリも局所化される。つまり、cd や pushd でカレントディレクトリを移動しても、endlocal で setlocal 時点の場所に戻る。
////////////////////////////////////////////////////////////////////////////
*環境変数値の外への持ち出し [#qdd579c7]
setlocal/endlocalの外へ内部の環境変数の値を持ち出したいケースがある。
setlocal/endlocal の外へ内部の環境変数の値を持ち出したいケースがある。
この場合、
set A=XYZ
set B=PQR
setlocal
set A=123
set B=456
.....
endlocal&set A=%A%
echo %A% %B% → 123 PQR
のように、endlocalとsetをマルチステートメント化する事で実現できる。
%による環境変数の展開は、構文解析に先立って行われるため、まず展開が行われ、
次にマルチステートメントが認識され、次にendlocalが実行されるがその時点ではすでに set の右辺は展開済みであるので、set では endlocal 実行前の環境変数の値がセットされることになる。
% による環境変数の展開は、構文解析に先立って行われるため、まず展開が行われ、
次にマルチステートメントが認識され、次に endlocal が実行される。次に set の実行だがその時点ではすでに set の右辺は展開済みであるので、結局 set では endlocal 実行前の環境変数の値がセットされることになる。
////////////////////////////////////////////////////////////////////////////
#navi(コマンド別)