読者です 読者をやめる 読者になる 読者になる

3.環境変数 (3)ローカル環境変数を使用する 〜ここだけの話〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

Windows Command DOSBatch


環境変数は、設定したコマンドプロンプトに対して有効になる。

でも、バッチファイルで設定した環境変数がそのまま
コマンドプロンプトに残っているとなにかと都合が悪い。
PATHなどはバッチファイルごとに指定した場合もある。
そのために使うのがsetlocalコマンドとendlocalコマンドである


これで環境変数のスコープを狭めることができる

テスト用バッチファイル
@echo off
echo 変数確認
set GLOBAL
set LOCAL
echo.

echo グローバル変数設定
set GLOBAL=hoge
echo.

setlocal
echo setlocal
echo 変数確認
set LOCAL
set GLOBAL
echo ローカル変数設定
set LOCAL=fuga
echo 変数確認
set LOCAL
set GLOBAL
endlocal
echo endlocal
echo.

echo 変数確認
set GLOBAL
set LOCAL
echo.

setlocal
echo setlocal
echo 変数確認
set LOCAL
set GLOBAL
echo ローカル変数設定
set LOCAL=foo
echo 変数確認
set LOCAL
set GLOBAL
endlocal
echo endlocal
echo.


echo 変数確認
set LOCAL
set GLOBAL
echo.
実行結果
変数確認
環境変数 GLOBAL が定義されていません
環境変数 LOCAL が定義されていません

グローバル変数設定

setlocal
変数確認
環境変数 LOCAL が定義されていません
GLOBAL=hoge
ローカル変数設定
変数確認
LOCAL=fuga
GLOBAL=hoge
endlocal

変数確認
GLOBAL=hoge
環境変数 LOCAL が定義されていません

setlocal
変数確認
環境変数 LOCAL が定義されていません
GLOBAL=hoge
ローカル変数設定
変数確認
LOCAL=foo
GLOBAL=hoge
endlocal

変数確認
環境変数 LOCAL が定義されていません
GLOBAL=hoge

setlocalコマンドとendlocalコマンドの間だけ有効になる