カレントディレクトリの局所化

setlocal/endlocal の間では、環境変数だけでなくカレントディレクトリも局所化される。つまり、cd や pushd でカレントディレクトリを移動しても、endlocal で setlocal 時点の場所に戻る。

環境変数値の外への持ち出し

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 の右辺は展開済みであるので、結局 set では endlocal 実行前の環境変数の値がセットされることになる。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-01-29 (土) 01:27:53 (7025d)