とすると表示されます。 環境変数の設定、削除はそれぞれ
> set
のようにします8。 なお、スペースをそれとわかるようにset [変数名]=[値]
set [変数名]=
で表しましたが、
上にあるように = の前後にはスペースを入れてはいけません。
値は基本的には文字列で、値文字列にスペースが含まれていても
文字列全体を引用符で囲む必要はありません9。
環境変数の値を利用するときは、変数名を % で囲んで %[変数名]% とします。例えば、
とすると「竹の 茂治」と表示されます。ここで echo は、 その後ろに指定した文字列を画面に表示するコマンドです10。
>set a=竹の
>set b=%a% 茂治
>echo %b%
現在のコマンドインタプリタ (の拡張機能) では、 変数の整数値、およびその計算も set コマンドでできるようになっていて、
で式の整数演算の結果を変数に代入できます。式には、set /a [変数名]=[式]
*=, /=, +=, -=, %=, <<=, >>=, &=, ^=, |=で置きかえることが可能です。
なお、剰余演算を意味する % は、 コマンドプロンプトの対話的な実行時は % でいいのですが、 バッチファイル中では % は特別な意味を持つため、 2 つ重ねて %% とする必要があります。 また、上記の演算子のうちいくつかは他の意味にも使われるので、 式を二重引用符で囲む必要がある場合 (例えばビット演算子) もあります。
整数値は、デフォルトでは 10 進数ですが、頭に 0x をつければ 16 進数、 0 をつければ 8 進数として扱われます。
また、「set /a」の右辺では変数の値は % で囲まずに単に変数名だけで参照できることになっています。 よって、例えばバッチファイルで
とすると、結果として 4 に 3×10 を 7 で割った余りを加えた 6 が表示されることになります。 3 行目の /a を書かないと、 = の後の式「3*x%7」が文字列として 「y+」という変数に代入されてしまうことになります。
set x=10
set y=4
set /a y+=3*x%%7
echo %y%
さらに、カンマ演算子 (,) があり、1 行の式の中で以下のような 逐次評価が行えます。
これは「2 4 8 17」と表示されます。
set x=1
set /a x+=(a=2, b=2*a, c=2*b, 2*c)
echo %a% %b% %c% %x%
また、コマンドライン上でバッチファイルに与えたオプションパラメータは、 バッチファイル内では順に %1,%2,...,%9 として参照できます。 %0 はバッチファイル自身の名前を指し11、 さらに %* は %1 以降のオプション文字列全体を表します。
例えば、test.bat というバッチファイルを
として実行すると、test.bat 内では
>test.bat 123 竹の 茂治
%0=test.bat, %1=123, %2=竹の, %3=茂治, %*=123 竹の 茂治となります。 %4 以降はこの場合空文字列となります。
なお、バッチファイルのオプションの区切りは、 スペースの他にカンマ (,) も利用できるので、
としても %* 以外は上と同じ結果になりますが、%* は
>test.bat 123,竹の 茂治
%*=123,竹の 茂治となります。
さらに、動的に変化する以下の変数があります。 なお、これらは環境変数の一覧表示の set コマンドでは表示されません12。
竹野茂治@新潟工科大学