バッチファイルのコマンド引数や、
for 文に渡される変数は、% の後に 1 文字続く形である。
これらの変数は特殊変数と呼ばれる。

%0 はバッチファイルの名前を意味し、
%1 はバッチファイルの 1 つめの引数、
%9 はバッチファイルの 9 つめの引数だ。
%* は元の引数を分解せずにそのまま保持している。

これら特殊変数には、~ と組み合わせることによって、
ファイル名の部分展開の機能があることは前に説明した。

コマンド環境には、これら特殊変数の他に、
変数(時に環境変数)と呼ばれる変数がある。
これらは特殊変数と違い、
アルファベットと数値、アンダースコアを使って
自由に名前をつけることができる。

変数を定義するには、set コマンドを使う。

set variable=value

これで、variable という変数が定義され、
その値として、「value」が格納された。

変数を呼び出すには、%name% という書式を使う。
変数はコマンドの任意の部分で使用することができ、
コマンドは、変数が展開されてから実行される。
命令行のどの部分に変数を使っても構わない。
また、変数名は大文字小文字を区別しない。

set ipall=ipconfig /all
echo %IPALL%
%ipall%

変数を削除するには、値を空として set を呼ぶ。

set variable=

変数の一覧を参照するには、set を単独で呼び出す。

C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\kes\Application Data
CLIENTNAME=Console
COMPUTERNAME=VISTA
(省略)

= をつけずに、set user などを指定すると、
user から始まる変数の一覧が表示される。

C:\>set user
USERDOMAIN=VISTA
USERNAME=kes
USERPROFILE=C:\Users\kes