#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(コマンド別)



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS