環境変数の生存期間について - Windowsのコマンドプロンプト(bat,cmd)
環境変数は、CMD コマンド(コマンドプロンプト)を実行した時だけ有効な変数です。最初から設定されているものもありますが、自由に変更する事が出来ます。
o 以下は、Windowsコマンド調査途中の内容です。他に情報を見つけましたら、このメモを更新します。
**** 環境変数の特徴
o 環境変数は、開いているコマンドプロンプト画面だけで有効な変数です。
+ SET コマンドで環境変数を変更しても、他のプログラムの環境変数は変わりません。
+ SET コマンドで環境変数を変更しても、他のコマンドプロンプト画面の環境変数は変わりません。
o コマンドプロンプト画面からプログラムを呼び出すと、その時点の環境変数の複製(= コピー)を、プログラムに渡します。
o バッチファイル内でSETLOCAL コマンドを実行すると、その時点の環境変数を保存する事が出来ます。
**** 環境変数が消える時期
o バッチファイル内で、SETLOCALコマンドを実行した後に設定した環境変数は、
+ そのSETLOCALコマンドに対応する ENDLOCALコマンドを発行した時
+ もしくは、そのSETLOCALコマンドを発行したバッチファイルを終了した時
# なお、バッチファイル A からバッチファイル B を呼び出した時は、少し複雑になります。
# CALL文でバッチファイル B を呼び出した時は、バッチファイル Bから戻ってくるまで有効です。
# + CALL先で ENDLOCAL コマンドを発行しても、意味がありません。
# CALL文を使わずに直接バッチファイル B を呼び出した時は、バッチファイル A の延長とみなします。
# + この時、バッチファイル B で ENDLOCAL コマンドを実行すると、環境変数の設定が消えます。
#
o CMD コマンド(やバッチファイル)の実行中に設定した環境変数は、
+ そのCMD コマンド(やバッチファイル)を終了する時
# 例えば、EXITコマンドで終了した時や、コマンドプロンプト画面を閉じた時です。
# 少し変わっているのが、バッチファイル A から CALL文を使わずにバッチファイル B を呼び出した時
# この時、バッチファイル Bは、バッチファイル A の延長とみなします。
#
o この他、コマンドプロンプト画面を終了した時にも、環境変数の設定内容は消えます。
**** 確認したバージョン
o Windows XP Service Pack 3
==
関連ページ:
▼Windowsコマンド。制御文と環境変数(▼ABC順)
▼Windowsコマンド一覧(▼ABC順)
▼コマンドプロンプト画面
▼制作メモ
> SET /A コマンドで数値計算出来る値の範囲(= 上限と下限)
IF = 条件に一致したら実行する
ELSE = IFで実行しない時に実行する
+
SET = 環境変数を表示、設定、削除する。もしくは数値計算する