Windowsのバッチファイル(.bat)を作成するとき、環境変数を扱うことは避けて通れません。
一時的に値を保持したり、システムが持つ既存の情報(パス、ユーザー名、日付など)を参照したりする際に便利です。
本記事では、環境変数を設定・参照する基本から、注意点、活用例までを解説します。
環境変数を設定する
バッチファイルで変数を設定するにはset
コマンドを使います。
基本的な構文は以下のとおりです。
set 変数名=値
例:ユーザー名を格納する変数を作る
set USERNAME_VAR=TestUser
注意点として、=
の前後にスペースを入れるとそのまま値に含まれてしまうため、スペースは入れないようにしてください。
環境変数を参照する
変数を参照するときは、変数名を%
で囲みます。
echo %USERNAME_VAR%
この場合「TestUser」と表示されます。
既存の環境変数を利用する
Windowsにはあらかじめ多くの環境変数が定義されています。
例えば以下のようなものがあります。
%USERNAME%
:現在ログオンしているユーザー名%USERPROFILE%
:ユーザープロファイルのパス%DATE%
:現在の日付%TIME%
:現在の時刻%PATH%
:実行可能ファイルを探すパス一覧
echo %USERNAME%
echo %DATE%
echo %TIME%
数値計算や文字列操作に使う
set /a
オプションを使うと数値演算が可能です。
set /a COUNT=1+2
echo %COUNT% ← 3 と出力される
またset
で文字列操作もできます。
例えば部分一致の環境変数を一覧表示することが可能です。
set PATH
変数のスコープと注意点
バッチファイル内で設定した環境変数は、そのバッチ実行中だけ有効です。
コマンドプロンプトを閉じると消えてしまいます。
永続的に環境変数を設定したい場合は、setx
コマンドを使う必要があります。
setx MYVAR "HelloWorld"
注意:setx
で設定した環境変数は新しいコマンドプロンプトから有効になります。
すでに開いているセッションには反映されません。
まとめ
バッチファイルで環境変数を扱うと、柔軟で再利用可能なスクリプトを作成できます。
set
で変数を定義し、%変数%
で参照、必要に応じてset /a
で計算、永続化にはsetx
を使う、と覚えておくと便利です。